fs 模块可以实现与硬盘的交互,如文件的操作和文件内容的操作,以及文件夹操作。
文件读取
- 异步读取
const fs = require("fs");
fs.readFile("./demo.txt", (err, data) => {
// err 失败:错误对象 成功:null
if (err) {
return;
}
console.log(data.toString());
});
- 同步读取
const fs = require("fs");
let data = fs.readFileSync("./demo.txt");
console.log(data.toString());
文件流式读取
const fs = require("fs");
fs.readFile("./demo.txt", (err, data) => {
// 每次读取64k数据,读取大文件时,相比同步内容占用更少
// err 失败:错误对象 成功:null
if (err) {
return;
}
console.log(data.toString());
});
文件写入
- 异步写入
const fs = require("fs");
let rs = fs.createReadStream("./demo.txt");
rs.on("data", (data) => {
console.log(data.toString(), data.length);
});
rs.on("end", () => {
console.log("读取完成");
});
- 同步写入
const fs = require("fs");
fs.writeFileSync("./demo.txt", "1111");
同步写入会等待执行结果,效率较低。
文件追加写入
- 同步追加
const fs = require("fs");
fs.appendFile("./demo.txt", "my node", (err) => {
// err 失败:错误对象 成功:null
});
- 异步追加
const fs = require("fs");
fs.appendFileSync("./demo.txt", "my node");
文件流式写入
const fs = require("fs");
const ws = fs.createWriteStream("./demo.txt");
ws.write("1111111\r\n");
ws.write("1111112\r\n");
ws.write("1111113\r\n");
ws.end();
流式写入适合大文件写入或频繁写入的场景,writeFile 则适合于写入频率较低的场景。