1、fs.createReadStream以流的方式读取文件
我们使用fs.createReadStream来处理文件
var readStream = fs.createReadStream('./data/input.txt');
var count = 0;
var str = '';
readStream.on('data', (data) => { // 读取文件并赋值
str += data;
count++;
})
readStream.on('end', () => { // 监听停止,后输出内容
console.log(str);
console.log(count);
})
readStream.on('error', (err) => { // 监听错误
console.log(err);
})
2、fs.createWriteStream以流的方式写入文件
const fs = require('fs');
/*
// 读取流
var readStream = fs.createReadStream('./data/input.txt');
var count = 0;
var str = '';
readStream.on('data', (data) => { // 读取文件并赋值
str += data;
count++;
})
readStream.on('end', () => { // 监听停止,后输出内容
console.log(str);
console.log(count);
})
readStream.on('error', (err) => { // 监听错误
console.log(err);
}) */
// 写入流
var str = '';
for (var i = 0; i < 500; i++){
str += '林俊杰\n';
}
var writeStream = fs.createWriteStream('./data/output.txt');
writeStream.write(str);
// 标记写入完成
writeStream.end();
writeStream.on('finish', () => {// 先有end再有finish
console.log('写入完成');
})
3、管道流
首先,我们将林俊杰复制到data目录下,操作如下↓:
var readStream = fs.createReadStream('./交换余生 林俊杰.png')
var writeStream = fs.createWriteStream('./data/林俊杰.png');
readStream.pipe(writeStream); // 将林俊杰复制
还可以进行重命名
piep管道流还可以对压缩包等大型文件进行复制