xingbofeng.github.io
xingbofeng.github.io copied to clipboard
node fs
fs
提供文件I/O
,是标准POSIX
函数的简单封装,提供文件和目录相关操作,所有的方法都有异步和同步的形式。对于异步方法,其返回的实例也继承自EventEmitter
,可以组合回调和EventEmmiter
的方法结合使用。
读取文件
同步读取
const fs = require('fs');
// 直接同步读取文件的方式
try {
const data = fs.readFileSync(__dirname + '/hello.txt', 'utf-8');
console.log(data);
} catch(err) {
console.error('readFileSync error: ' + err.message);
}
异步读取
异步读取采用回调的方式来进行:
const fs = require('fs');
// 异步读取文件的方式
fs.readFile(__dirname + '/hello.txt', 'utf-8', (err, data) => {
if (err) {
return console.error('readFile error: ' + err.message);
}
return console.log(data);
});
通过创建流的方式读取
通过fs.createReadStream()
创建可读的流,监听data
事件读取每一个chunk
数据,最后组合数据。
const fs = require('fs');
const readableStream = fs.createReadStream(__dirname + '/hello.txt', 'utf-8');
let data = '';
readableStream.on('data', (chunk) => {
data += chunk;
});
readableStream.on('end', () => {
console.log(data);
});
readableStream.on('error', (err) => {
console.error('readableStream error: ' + err.message);
});
写入文件
异步写入
const fs = require('fs');
fs.writeFile(__dirname + '/hello2.txt', 'hello world 2', 'utf8', (err) => {
if (err) {
console.error('writeFile error: ' + err.message);
}
});
同步写入
const fs = require('fs');
try {
fs.writeFileSync(__dirname + '/hello2.txt', 'hello world 2', 'utf8');
} catch (err) {
console.error('writeFile error: ' + err.message);
}
通过流的方式写入
通过fs.createWriteStream()
创建可写的流,通过writeableStream.write()
写入数据。
const fs = require('fs');
const writeableStream = fs.createWriteStream(__dirname + '/hello3.txt', 'utf-8');
writeableStream.write('hello world 3', 'utf-8', (err, data) => {
if (err) {
console.error('write error: ' + err.message);
}
});
writeableStream.on('close', () => {
console.log('writeableStream is closed!');
});
writeableStream.end();