首页 > 编程语言 >nodejs中buffer 和 stream

nodejs中buffer 和 stream

时间:2022-11-28 14:34:01浏览次数:64  
标签:fs 读取 stream nodejs buffer 二进制 txt 数据

nodeJS 中的 buffer(缓冲区):https://juejin.cn/post/7056337343304695839

  JavaScript 语言没有二进制数据类型,如果需要处理tcp流、视频、音频必须使用buffer来处理二进制数据;
  所以, buffer 可以理解为存储 二进制数据的 存储对象。类似  array、object这样的 存储对象。

// 创建一个大小为10的空buffer
// 这个buffer只能承载10个字节的内容
const buf1 = Buffer.alloc(10);  // <Buffer 00 00 00 00 00 00 00 00 00 00>
// 根据内容直接创建buffer 
const buf2 = Buffer.from("hello buffer");

作用:buffer 存储的是二进制的数据,我们对数据的操作就可以基于二进制内容进行操作了。因为有很多文件都是二进制存储的,通过buffer就可以对这样的文件进行操作了。比如,读写  word文件 等。

 

nodeJs 中的 stream(流):https://juejin.cn/post/6844903638326853646 

  流可以理解为,就是一个过程。读取一个文件,可以 一次性把它全部读取到内存中;也可以分成一段一段,读取完一段,再读取下一段。这样一个过程就是一个流的过程。

  总结就是: 一次性 读写的事,通过流可以变成分段读写。可以更好的利用内存。

let readStream=fs.createReadStream('read.txt');
let writeStream=fs.createWriteStream('write.txt');
readStream.on('data',function (chunk) {
    //当有数据流入时,就写入数据
    writeStream.write(chunk);
});
readStream.on('end',function (chunk) {
    //没有数据写入,关闭写入流,读取流默认设置是读取完成自动关闭
    writeStream.end();
})

当然,上面的实现还有些问题,那就是如果读取的速度大于写入的速度,很可能导致数据的丢失,因此,我们可以用流的一个方法pipe,顾名思义就是管道,它可以控制数据传输速度,让流写完一段数据再读取下一段。如下:

fs.createReadStream('read.txt').pipe(fs.createWriteStream('write.txt'));

 

标签:fs,读取,stream,nodejs,buffer,二进制,txt,数据
From: https://www.cnblogs.com/wfblog/p/16932006.html

相关文章

  • Redis学习(十)之redis中的数据类型之Streams类型
      1、redis流这种结构类似于日志追加; 2、redis生成一个唯一id为每个流,使用id检索他们的关联条目或者处理后续条目,这个怎么理解???到底是怎么关联的? 3、redis流支持多......
  • 使用Stream流遍历筛选数据
    使用Stream流遍历筛选数据@TestpublicvoidPredicate(){  List<String>objects=newArrayList<>();    objects.add("张三丰");    objects.add(......
  • ByteBuffer常用方法详解
    缓冲区(Buffer) 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区:使用缓冲区有这么两个好处:1、......
  • nginx安装,upstream配置
    nginx安装和upstream配置安装系统centos7.9相关命令yuminstall-ypcrezlibopensslyuminstall-ypcre-developenssl-develzlib-devel./configure......
  • Stream
    map泛型方法R对应的是返回值?Function也是map收集?packagecom.stream;//stream体验//把张的三个字的留下importjava.util.ArrayList;importjava.util.Collecti......
  • Nodejs简单方式安装至centos
    1.官网 下载编译好的包官网下载:下载|Node.js中文网(nodejs.cn)cd/usr/localwgethttps://npmmirror.com/mirrors/node/v16.18.1/node-v16.18.1-linux-x64.tar.xz......
  • 【java技术总结】stream来处理分组问题
    1.使用Collectors.groupingBy(方法引用返回分组属性作为k)2.使用Collectors.groupingBy(方法引用返回分组属性作为k,Collectors的静态类返回值)3.使用reduce归并数据,reduc......
  • Centos安装Nodejs简单方式
    Node.js是一个基于ChromeV8引擎的JavaScript运行时。本文主要讲的是如何在Linux即Centos上安装Nodejs的简单方式,有比设置环境变量更加简单的方式,那就是设置软链接,软......
  • Stream In Java
    https://www.geeksforgeeks.org/stream-in-java/ IntroducedinJava8,theStreamAPIisusedtoprocesscollectionsofobjects.Astreamisasequenceofobje......
  • Pytest接口测试框架实战项目搭建(五)—— Streamlit首次应用
    一、源码,c_page.py'''@Date:2022/11/1414:36@Author:一加一'''importstreamlitasstimportosimportsysBASE_DIR=os.path.dirname(os.path.dirname(os.pa......