文件操作:
在操作较大的文件时,使用流式操作就不会完全占用电脑内存,更快捷
大文件操作(readFIle读取文件的时候,会把所有的文件数据加载到内存)
文件的流式操作
fs.createReadStream(path[, options])
fs.createWriteStream(path[, options])
const path = require('path');
const fs = require('fs');
// fs.readFile('C:\\Users\\www\\Desktop\\Nodejs\\file.zip',(err,data)=>{
// console.log(err);
// });
let sPath = 'C:\\Users\\www\\Desktop\\Nodejs\\file.zip';
let tPath = 'C:\\Users\\www\\Desktop\\file.zip';
let readStream = fs.createReadStream(sPath);
let writeStream = fs.createWriteStream(tPath);
let num = 1;
// 基于事件的回调函数
readStream.on('data',(chunk) => {
num += 1;
writeStream.write(chunk);
});
readStream.on('end',() => {
console.log('处理完成'+num);
});
上面的操作太过繁琐,官方提供了pipe(管道)的方法:
const path = require('path');
const fs = require('fs');
let sPath = 'C:\\Users\\www\\Desktop\\Nodejs\\file.zip';
let tPath = 'C:\\Users\\www\\Desktop\\file.zip';
let readStream = fs.createReadStream(sPath);
let writeStream = fs.createWriteStream(tPath);
// readStream.pipe(writeStream);
fs.createReadStream(sPath).pipe(writeStream);
readline模块:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,//标准输入流(键盘)
output: process.stdout//标准输出流(显示器)
});
// rl.question('What do you think of Node.js? ', (answer) => {
// console.log('Thank you for your valuable feedback:', answer);
// rl.close();
// });
// ---------------------------------------------------
// 基于事件的回调函数
console.log(1);
rl.on('line',(line)=>{
if(line == 'exit'){
rl.close();
return ;
}
console.log('你输入了如下内容:'+line);
console.log(2);
});
console.log(3);