node.js中文件的流模式操作

一般我们处理数据有两种模式, 一种是buffer模式, 一种是stream模式, buffer模式就是取完数据一次性操作, stream模式就是边取数据边操作.
举个例子, 如果打开一个2G的文件, 用buffer模式就是先分配2G的内存, 把文件全部读出来, 然后开始操作内存, 而用流模式的方法就是边读数据, 边开始处理.

从这里看出stream模式无论是在空间和时间上都优于buffer模式:
在空间上, 内存只会占用当前需要处理的一块数据区域的大小, 而不是整个文件.
在时间上, 因为不需要全部的数据就可以开始处理, 时间就相当于节约了, 从串行变成了并行操作(这里的并行不是多线程的并行, 而是生产者和消费者并行).



var fs = require("fs");
/*
    读取文件的状态;
    fs.stat(path,callback);
    callback有两个参数;err,stats;stats是一个fs.Stats对象;
    如果发生错误err.code是常见错误之一;
 不建议在调用 fs.open() 、fs.readFile() 或 fs.writeFile() 之前使用 fs.stat() 检查一个文件是否存在。 作为替代,用户代码应该直接打开/读取/写入文件,当文件无效时再处理错误。
 如果要检查一个文件是否存在且不操作它,推荐使用 fs.access()。
 */

/**
 * Created by SlzStar on 2017/9/18.
 */
//文件的流式操作;
var fs = require("fs");
//文件的流式读模式;创建可读流
var rs = fs.createReadStream("./W3CSchool.chm");
//定义空字符串,接收传递的数据;
var data = "";
//读取事件;
rs.on("data",function(drunk){
    console.log(drunk);
    data += drunk;
})
//读取完毕事件;
rs.on("end",function(){
    console.log("已经读取完毕了");
})
//监听错误事件;
rs.on("error",function(err){
    console.log("监听失败,错误事件---"+ err)
})


//文件的流式写入模式; 创建可写流;
var ws = fs.createWriteStream("./wenjian.txt");
ws.write("写入的文件内容");//会覆盖文件原本的内容;
//进行写入数据,传输完毕;
ws.on("finish",function(){
    console.log("传输完毕");
})
//监听错误信息;
ws.on("error",function(err){
    console.log("发生错误信息"+err)
})


ws.end(); //必须有手动标记写入结束;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值