目录
fs 模块可以实现与硬盘的交互例如文件的创建、删除、重命名、移动还有文件内容的写入、读取以及文件夹的相关操作,是node.js中的重要模块
一、fs实现写入内容
1.先导入fs模块
const fs = require('fs');
2.写入文件
写入失败:错误对象 写入成功: null
fs.writeFile('./座右铭.txt', '三人行,则必有我师焉', err => {
//err 写入失败:错误对象 写入成功: null
if (err) {
console.log('写入失败');
return;
}
console.log('写入成功');
})
完整代码
//需求:
//新建一个文件夹,座右铭.txt, 写入内容:三人行,则必有我师焉
//
//1.导入fs模块
const fs = require('fs');
//2.写入文件
fs.writeFile('./座右铭.txt', '三人行,则必有我师焉', err => {
//err 写入失败:错误对象 写入成功: null
if (err) {
console.log('写入失败');
return;
}
console.log('写入成功');
})
二、writeFile 实现追加写入
fs.writeFile('./座右铭.txt', 'love love love', { flag: 'a' }, err => {
if (err) {
console.log('写入失败');
return;
}
console.log('写入成功');
})
三、fs流式文件写入
1.导入fs模块
const fs = require('fs')
2.创建写入流对象
const ws = fs.createWriteStream('./观书有感.txt')
3.write
ws.write('床前明月光\r\n')
ws.write('疑是地上霜\r\n')
ws.write('举头望明月\r\n')
ws.write('低头思故乡\r\n')
4.关闭通道
ws.close()
完整代码:
//观书有感.txt
//1.导入fs模块
const fs = require('fs')
//2.创建写入流对象
const ws = fs.createWriteStream('./观书有感.txt')
//3.write
ws.write('床前明月光\r\n')
ws.write('疑是地上霜\r\n')
ws.write('举头望明月\r\n')
ws.write('低头思故乡\r\n')
//4.关闭通道
ws.close()
四、文件读取
1.引入fs模块
const fs = require('fs')
2.异步读取或者同步读取
异步读取
//2.异步读取
fs.readFile('./观书有感.txt', (err, data) => {
if (err) {
console.log('读取失败');
return
}
console.log(data.toString());
})
同步读取
//3.同步读取
let data = fs.readFileSync('./观书有感.txt')
console.log(data.toString());
3.流式读取
(1)创建读取对象
const rs = fs.createReadStream('./观书有感.txt')
(2)绑定data事件
//3.绑定 data 事件
rs.on('data', chunk => {
console.log(chunk);
})
(3)end
// 4. end
rs.on('end', () => {
console.log('读取完成');
})
完整代码
//1.引入fs模块
const fs = require('fs')
// 2.创建读取流对象
const rs = fs.createReadStream('./观书有感.txt')
// console.log(rs);
//3.绑定 data 事件
rs.on('data', chunk => {
console.log(chunk);
})
// 4. end
rs.on('end', () => {
console.log('读取完成');
})
五、文件复制
复制观书有感
const fs = require('fs')
方式一 readFile
//读取文件内容
let data = fs.readFileSync('./观书有感.txt')
//写入文件
fs.writeFileSync('./观书有感2.txt', data)
方式二 流式操作
// 方式二 流式操作
const rs = fs.createReadStream('./观书有感.txt')
//创建写入流对象
const ws = fs.createWriteStream('./观书有感3.txt')
//绑定data事件
rs.on('data', chunk => {
ws.write(chunk)
})
六、文件移动
1.导入fs模块
const fs = require('fs')
2.调用rename方法
fs.rename('./座右铭.txt', './论语.txt', err => {
if (err) {
console.log('操作失败');
return
}
console.log('操作成功');
})
七、文件删除
1.导入fs模块
const fs = require('fs')
2.调用unlink方法或rm方法(以unlink为例)
fs.unlink('./观书有感.txt', err => {
if (err) {
console.log('删除失败');
return
}
console.log('删除成功');
});
八、fs文件夹操作
1.导入fs模块
const fs = require('fs')
2.创建文件夹
fs.mkdir('./html', err => {
if (err) {
console.log('创建失败');
return
}
console.log('创建成功');
})
2-2 递归创建
fs.mkdir('./a/b/c', { recursive: true }, err => {
if (err) {
console.log('创建失败');
return
}
console.log('创建成功');
})
2-3 读取文件夹
fs.readdir('./资料', (err, data) => {
if (err) {
console.log('读取失败');
return
}
console.log(data);
})
2-4 删除文件夹
fs.rmdir('./html', err => {
if (err) {
console.log('删除成功');
return
}
console.log('删除成功');
})
// 递归删除 不推荐使用
fs.rmdir('./a', { recursive: true }, err => {
if (err) {
console.log('删除成功');
returna
}
console.log('删除成功');
})
// 建议使用
fs.rm('./a', { recursive: true }, err => {
if (err) {
console.log('删除成功');
returna
}
console.log('删除成功');
})
九、fs查看资源状态
1.导入fs模块
const fs = require('fs')
2. stat 方法 status 缩写 状态
fs.stat('./资料/asda.txt', (err, data) => {
if (err) {
console.log('操作失败');
return
}
console.log(data);
})