Photo by Mohammad Rahmani on Unsplash
档案函式说明
变数 | 说明 |
---|---|
fs.readFile() | 读取档案 |
fs.writeFile() | 写入档案 |
fs.appendFile() | 加入档案 |
fs.rename() | 重新命名档名 |
fs.unlink() | 删除档案 |
fs.createReadStream() | 建立串流读取 |
fs.createWriteStream() | 建立串流写入 |
fs.mkdir() | 建立目录 |
fs.rmdir() | 移除目录 |
fs.existSync() | 档案或目录是否存在 |
档案例外处理
const fs = require('fs');
fs.readFile('unknown.json', 'utf8', (error, data) => {
if (error) throw error
console.log(data.toString());
});
process.on('uncaughtException', error => {
console.error(`Got error: ${error}`);
process.exit(1);
});
同步处理档案
让操作流程照步骤一步一步走,不会像 async 跳着做发生无法预期的状况
在档案套件加入 promises
即可使用同步操作
const fsPromises = require(‘fs’).promises;
const path = require('path');
const fsPromises = require('fs').promises;
const fileOperation = async () => {
try {
// 读取档案
const data = await fsPromises.readFile(path.join(__dirname, 'kj.json'), 'utf8');
console.log(data);
// 写入档案
await fsPromises.writeFile(path.join(__dirname, 'promiseWrite.txt'), data);
// 加入档案
await fsPromises.appendFile(path.join(__dirname, 'promiseWrite.txt'), '\n\nNice to meet you');
// 重新命名档案
await fsPromises.rename(path.join(__dirname, 'promiseWrite.txt'), path.join(__dirname, 'promiseWriteRename.txt'));
} catch (error) {
console.error(error);
}
}
fileOperation();
串流读写档案
const path = require('path');
const fs = require('fs');
const rs = fs.createReadStream(path.join(__dirname, 'lorem.txt'), {
encoding : 'utf8'
})
const ws = fs.createWriteStream(path.join(__dirname, 'new-lorem.txt'))
// 方法 1: 听事件
rs.on('data', (dataChunk) => {
ws.write(dataChunk);
});
// 方法 2,直接指定写入
rs.pipe(ws);
档案目录是否存在 existsSync
if (!fs.existsSync('./new')) {
fs.mkdir('./new', (error) => {
if (error) throw error;
console.log('Directory created');
});
}
if (fs.existsSync('./new')) {
fs.rmdir('./new', (error) => {
if (error) throw error;
console.log('Directory deleted');
});
}
Donate KJ 贊助作者喝咖啡
如果這篇文章對你有幫助的話,可以透過下面支付方式贊助作者喝咖啡,如果有什麼建議或想說的話可以贊助並留言給我
If this article has been helpful to you, you can support the author by treating them to a coffee through the payment options below. If you have any suggestions or comments, feel free to sponsor and leave a message for me!
方式 Method | 贊助 Donate |
PayPal | https://paypal.me/kejyun |
綠界 ECPay | https://p.ecpay.com.tw/AC218F1 |
歐付寶 OPay | https://payment.opay.tw/Broadcaster/Donate/BD2BD896029F2155041C8C8FAED3A6F8 |