極簡 Node.js 入門系列教程:https://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 章節會有詳細介紹