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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs fs 读取文件流一次读取多少数据相关的知识,希望对你有一定的参考价值。

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('正在监听...');  

    );  

参考技术A 通过fs.createReadStream(path[, options])方法,在data事件返回的值,一次最大返回65565长度的数据

字节输入流读取字节数据和字节输入流一次读取多个字节

读取数据的原理(硬盘-->内存) java程序-->JVM-->OS-->OS读取数据的方法-->读取文件 字节输入流的使用步骤: 1.创建FileInputStream对象,构造方法中绑定要读取的数据源 2.使用FileInputStream对象中的方法read,读取文件 3.释放资源 packa

以上是关于nodejs fs 读取文件流一次读取多少数据的主要内容,如果未能解决你的问题,请参考以下文章

使用nodejs fs同时读取文件

Nodejs读取文件

用nodejs实现读取文件操作

NodeJs - 使用 fs.createReadStream 读取文件时出错

对fs异步读取文件的理解

nodejs里一般怎么读取数据库相关的配置文件