極簡 Node.js 入門 - 3.3 文件寫入
極簡 Node.js 入門系列教程://www.yuque.com/sunluyong/node
fs.writeFile
fs.writeFile(file, data[, options], callback)
- file:文件名或文件描述符
- data:常用的主要是 string 和 buffer
- callback(err)
當 file 是文件名時,則非同步地寫入數據到文件,如果文件已存在,則覆蓋文件內容
const fs = require('fs');
const data = Buffer.from('Hello, Node.js');
fs.writeFile('./test.txt', data, err => {
if (err) throw err;
console.log('文件已被保存');
});
fs.write
fs.write 有兩種重載
- fs.write(fd, buffer[, offset[, length[, position]]], callback):參數含義和 fs.read 幾乎相同
- fs.write(fd, string[, position[, encoding]], callback):只能把字元串內容全部寫入文件
兩個的區別就是適用 buffer 可以治寫入 buffer 中 offset ~ length + offset 的內容,而使用字元串只能把字元串內容全部寫入文件
const fs = require('fs');
const data1 = Buffer.from('Hello, Node.js');
const data2 = 'Hello, Node.js';
const fd = fs.openSync('./test.txt', 'w');
console.log(fd)
fs.write(fd, data1, err => {
if (err) throw err;
console.log('data1 已被寫入');
});
fs.write(fd, data2, err => {
if (err) throw err;
console.log('data2 已被寫入');
});
setTimeout(() => {
fs.close(fd, console.log);
}, 100);
fs.appendFile
fs.appendFile(path, data[, options], callback) 將數據追加到文件尾部,如果文件不存在則創建該文件
const fs = require('fs/promises');
const data1 = Buffer.from('Hello,');
const data2 = Buffer.from(' Node.js');
fs.appendFile('./test.txt', data1)
.then(() => {
fs.appendFile('./test.txt', data2);
console.log('文件內容追加完成');
});
fs.createWriteStream
fs.createWriteStream(path[, options]) 用來創建一個可寫的文件流,options 和 fs.createReadStream 幾乎相同
options(比較常用的有)
- fd: 默認值 null,如果指定了 fd,則會忽略 path 參數,使用指定的文件描述符(不會再次觸發 open 事件)
- mode:默認值 0o666
- autoClose: 默認值: true,當 'error' 或 'finish' 事件時,文件描述符會被自動地關閉
- start: 開始寫入文件的位置,不設置默認覆蓋
把一個可讀流內容寫到可寫流非常簡單
const fs = require('fs');
fs.createReadStream('./test.txt')
.pipe(fs.createWriteStream('./copy.txt'));
關於流的介紹和更多使用在 Buffer 和 Stream 章節會有詳細介紹

