文章目录
- 1.writeFile
- 2.writeFileSync
- 3.fsPromises.writeFile
- 4.createWriteStream
1.writeFile
它是一个异步写入的方法
函数参数
file <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符
data <string> | <Buffer> | <TypedArray> | <DataView> | <Object>
options <Object> | <string>
encoding <string> | <null> 默认值: 'utf8'
mode <integer> 默认值: 0o666
flag <string> flag具体值的含义,可以参考上一篇文章。 默认值: 'w'
signal <AbortSignal> 允许中止正在进行的写入文件
callback <Function>
err <Error> | <AggregateError>
当 file 是文件名时,将数据异步地写入文件,如果文件已存在则替换该文件。 data 可以是字符串或缓冲区。
flag值的含义
当 file 是文件描述符时,其行为类似于直接调用 fs.write()(推荐)。 请参阅以下有关使用文件描述符的说明。
如果 data 是缓冲区,则忽略 encoding 选项。
代码示例
const fs = require("fs");
const fsPromises = require("fs/promises");
fs.writeFile("./写入歌词.txt", Buffer.from("第一次追加"), {}, (res) => {
console.log("结果", res);
});
2.writeFileSync
这个是同步的方式写入
函数参数
file <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符
data <string> | <Buffer> | <TypedArray> | <DataView> | <Object>
options <Object> | <string>
encoding <string> | <null> 默认值: 'utf8'
mode <integer> 默认值: 0o666
flag <string> flag具体值的含义,可以参考上一篇文章。 默认值: 'w'
signal <AbortSignal> 允许中止正在进行的写入文件
代码示例
fs.writeFileSync("./写入歌词.txt", Buffer.from("\n第6次追加"), {
flag: "a", // 打开文件进行追加,
});
如果不指定 flag ,使用默认值的话,会覆盖源文件的内容
3.fsPromises.writeFile
此方法需要这样导入
const fsPromises = require("fs/promises");
函数参数
file <string> | <Buffer> | <URL> | <FileHandle> 文件名或 FileHandle
data <string> | <Buffer> | <TypedArray> | <DataView> | <AsyncIterable> | <Iterable> | <Stream>
options <Object> | <string>
encoding <string> | <null> 默认值: 'utf8'
mode <integer> 默认值: 0o666
flag <string> 请参阅对文件系统 flags 的支持。 默认值: 'w'。
signal <AbortSignal> 允许中止正在进行的写入文件
返回: <Promise> 成功时将返回 undefined
代码示例
fsPromises
.writeFile("./写入歌词.txt", Buffer.from("\n第7次追加"), { flag: "a" })
.then(
(res) => {
console.log("res", res);
},
(err) => {}
);
4.createWriteStream
创建一个
可写流
函数参数
path <string> | <Buffer> | <URL>
options <string> | <Object>
flags <string> 请参阅对文件系统 flags 的支持。 默认值: 'w'。
encoding <string> 默认值: 'utf8'
fd <integer> | <FileHandle> 默认值: null
mode <integer> 默认值: 0o666
autoClose <boolean> 默认值: true
emitClose <boolean> 默认值: true
start <integer>
fs <Object> | <null> 默认值: null
返回: <fs.WriteStream>
代码示例
let writeStream = fs.createWriteStream("./写入歌词.txt", {
flags: "a",
});
// from 第一个参数传递一个对象, length 是长度
// 第二个参数 回调函数,第一个参数是当前项,第二个参数是索引
const textContent = Array.from({ length: 100 }, (_, index) => index + 100);
textContent.forEach((item) => {
writeStream.write(`\n第${item}次追加`);
});
writeStream.end(); // 关闭流
writeStream.on("finish", () => {
console.log("写入完成");
});