Open xingbofeng opened 6 years ago
fs提供文件I/O,是标准POSIX函数的简单封装,提供文件和目录相关操作,所有的方法都有异步和同步的形式。对于异步方法,其返回的实例也继承自EventEmitter,可以组合回调和EventEmmiter的方法结合使用。
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数据,最后组合数据。
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()写入数据。
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();
fs
提供文件I/O
,是标准POSIX
函数的简单封装,提供文件和目录相关操作,所有的方法都有异步和同步的形式。对于异步方法,其返回的实例也继承自EventEmitter
,可以组合回调和EventEmmiter
的方法结合使用。读取文件
同步读取
异步读取
异步读取采用回调的方式来进行:
通过创建流的方式读取
通过
fs.createReadStream()
创建可读的流,监听data
事件读取每一个chunk
数据,最后组合数据。写入文件
异步写入
同步写入
通过流的方式写入
通过
fs.createWriteStream()
创建可写的流,通过writeableStream.write()
写入数据。