Node学习第四课

  • • 发表于 8年前
  • • 作者 丁小柒
  • • 1608 人浏览
  • • 2 条评论
  • • 最后编辑时间 8年前
  • • 来自 [技 术]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

在之前,我们讲了有关使用fs模块来读写文件,,如果读取数据的速度快于写入的数据的速度,那么就可能会造成数据的丢失,这时候我们就需要使用流来读取。
使用ReadStream来读取文件

var ReadStream=fs.createReadStream('/index.js');//创建文件读取流
ReadStream.on('open',function(){
    console.log('开始读取');    //开始读取
})
ReadStream.on('data'.function(data){
    console.log(data);            //读取数据
})
ReadStream.on('close',function(){
    console.log('结束');        //关闭流
})
ReadStream.on('error',function(){
    console.log('失败')            //返回错误
})

创建文件写入流

var data = '丁小柒的node';

// 创建一个可以写入的流,写入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');

//以 utf8 编码形式写入数据
writerStream.write(data,'UTF8');

// 标记文件末尾
writerStream.end();

// 处理流事件 --> data, end, and error
writerStream.on('finish', function() {
    console.log("写入完成。");
});

writerStream.on('error', function(err){
   console.log('写入出错‘);
});

console.log("程序执行完毕");

如果文件需要暂停传输,然后再继续:

ReadStream.on('data'.function(data){
    console.log(data);            //读取数据
})
ReadStream.pause();                //暂停data事件
ReadStream.resume();            //继续data事件

管道流:
如果我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个桶流入另一个桶,这样就慢慢的实现了大文件的复制过程,毕竟水往下流。

var readerStream = fs.createReadStream('input.txt');// 创建一个可读流
var writerStream = fs.createWriteStream('output.txt');// 创建一个可写流
readerStream.pipe(writerStream);// 管道读写操作,读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
console.log("程序执行完毕");
分享到:
2条评论
Ctrl+Enter
作者

丁小柒

丁小柒

APP:0 帖子:24 回复:26 积分:1091

已加入社区[2943]天

长剑非是封木鞘,挥手再斩万鬼雄

作者详情》
Top