nodejs fs 读取文件流一次读取多少数据

 我来答
育知同创教育
2017-12-06 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部

node中有个流的概念,stream。代表数据流动方向:向内流(可读流),向外流(可写流)。常用的流形式是文件,和tcp套接字。流是以快为单位发送数据,通过监听‘data’事件,每一次得到一块数据即进行一次操作,当数据结束时,监听end事件,执行后续操作。

可读流可以通过stream.pause();stream.resume()暂停恢复流。其中暂停流在写文件时会停止从该文件中读取数据,如果是TCP套接字则不会读取新的数据包,终止其他终端来的数据包。可写流是要从node向外输出的数据,可以是TCP连接也可以是文件。node不会在io操作上阻塞,写入的缓冲区如果被刷新,会发射drain事件,如果没有被刷新,数据将被存储在进程内存中。

TCP连接是双向的,因此既是可读流也是可写流。以node作为服务器,则HTTP的请求是可读流,响应是可写流。

通常在服务器端读取本地数据是快速的,即可读流是快速的。然而由于网络原因,很多响应即可写流是无法保证的,如果请求太多(在服务器的读写范围内),而响应太慢,会导致服务器的可写流填满。此时需要避免慢客户端(前端响应慢)的情况。

[javascript] view plain copy

  • fs = require('fs');  

  • require('http').createServer(function (req,res) {  

  • var rs = fs.createReadStream('./1.txt');  

  • rs.on('data', function(data) {  

  • if(!res.write(data)){  

  • rs.pause();  

  • }  

  • });  

  • rs.on('drain', function(data) {  

  • rs.resume();  

  • });  

  • rs.on('end', function(){  

  • res.end();  

  • })  

  • }).listen(8080,function(){  

  • console.log('正在监听...');  

  • });  


  • 也可以使用stream.pipe();pipe接受可写流作为第一个参数,由传输源调用。
  • [javascript] view plain copy

  • fs = require('fs');  

  • require('http').createServer(function (req,res) {  

  • var rs = fs.createReadStream('./1.txt');  

  • rs.pipe(res);  

  • }).listen(8080,function(){  

  • console.log('正在监听...');  

  • });  

lovelyjpw
2017-12-21 · TA获得超过160个赞
知道答主
回答量:12
采纳率:0%
帮助的人:6.2万
展开全部
通过fs.createReadStream(path[, options])方法,在data事件返回的值,一次最大返回65565长度的数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式