读取数据

// 引入 fs 模块
const fs = require('fs'); // 创建可读流
let readStream = fs.createReadStream('index.txt'); // 保存数据
let str = ''
// 读取次数
let count = ; // 处理流事件 data - 当有数据可读时触发。 readStream.on('data',(chunk)=>{
str += chunk;
count++;
}) // end - 没有更多的数据可读时触发。
readStream.on('end',(chunk)=>{
console.log(str)
console.log(count);
}) // error - 在接收和写入过程中发生错误时触发。
readStream.on('error',(err)=>{
console.log(err);
})

结果如下:

成功读取到文本内容,且文件较大时,会分次读取,这里分两次读取

写入数据

const fs = require('fs');

let data = '我是从数据库获取的数据,我要以文件流的方式保存起来\n';

// 创建一个可以写入的流,写入到文件 output.txt 中
let writeStream = fs.createWriteStream('output.txt'); for(let i = ;i < ; i++){
writeStream.write(data,'utf8');
} // 标记写入完成
writeStream.end(); writeStream.on('finish',()=>{
console.log('写入完成');
}) writeStream.on('error',()=>{
console.log('写入失败');
})

output.txt 文件写入了 100 条数据

注意: end() 方法 会触发 finish 方法,如果不标记 end , 则无法触发 finish 方法,所以,建议大家写入完成标记end

管道流:

针对大型文件的复制

const fs = require('fs');

// 创建一个可读流
let readStream = fs.createReadStream('index.txt');
// 创建一个可写流
let writeStream = fs.createWriteStream('output.txt'); // 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readStream.pipe(writeStream);
console.log('执行完毕');

node.js 从文件流中读写数据及管道流的更多相关文章

  1. Node.js躬行记(1)——Buffer、流和EventEmitter

    一.Buffer Buffer是一种Node的内置类型,不需要通过require()函数额外引入.它能读取和写入二进制数据,常用于解析网络数据流.文件等. 1)创建 通过new关键字初始化Buffer ...

  2. Node.js写文件的三种方法

    Node.js写文件的三种方式: 1.通过管道流写文件 采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐) var readStream = fs. ...

  3. Node.js读取文件内容

    原文链接:http://blog.csdn.net/zk437092645/article/details/9231787 Node.js读取文件内容包括同步和异步两种方式. 1.同步读取,调用的是r ...

  4. Python StringIO实现内存缓冲区中读写数据

    StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的“文件”,我们可以像操作磁盘文件那样来操作StringIO.这篇文章主要介绍了Python StringIO模块,此模块 ...

  5. js怎样得出数组中某个数据最大连续出现的次数

     1:js怎样得出数组中某个数据最大连续出现的次数 var test=[1,2,3,3,2,2,2,3,3,3,3,5,3,3,3,3,3] ;    var j  = 0 ;    var max  ...

  6. node.js的fs核心模块读写文件操作 -----由浅入深

    node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFil ...

  7. node.js grunt文件压缩

    对于前段来说,熟悉node的人其实还并不是太多,如果您想入门一门后端语言我建议还是从node入手最好. 我也是最近开始学习node,来谈谈近期对node的学习的心得. 提到node首先就是要安装一大堆 ...

  8. 使用node.js的bodyParser中间件读取post数据解析

    昨天我们使用的网关转发数据时出了点问题! 情景是这样的,另一方以Post的形式向我的node.js服务推送JSON数据.但是使用bodyParser中间件后,在req.body中拿不到任何信息. 代码 ...

  9. 字符串流sstream[part2/使用同一个字符串流反复读写数据]

    stringstream构造函数会特别消耗内存,似乎不打算主动释放内存(或许是为了提高效率),如果你要在程序中使用同一个流反复读写大量数据,将会造成大量的内部消耗,因此建议:    1:调用clear ...

随机推荐

  1. (57)C# frame4 调用frame2

    http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspx https://www.cnblogs.com/weixing/archive/2012/0 ...

  2. 判断数组中值为empty

    const n = this.item.answerSelfId.length; let num = 0; for (let m = 0 ; m < n ; m++) { if ( !this. ...

  3. 极致CMS建站系统后台GETSHELL

    起因 正在学习代码审计 看到有人提交了一个注入https://www.cnvd.org.cn/flaw/show/CNVD-2019-42775 想试试看还有没有别的漏洞 受影响版本 v1.6.3 - ...

  4. jsp页面间的传值方法

    JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp? ...

  5. Zookeeper 集群的安装及高可用性验证已完成!

    安装包 kafka_2.12-0.10.2.0.tgz zookeeper-3.3.5.tar.gz Java 环境 Zookeeper 和 Kafka 的运行都需要 Java 环境,Kafka 默认 ...

  6. Rabbitmq的延时队列的使用

    配置: spring: rabbitmq: addresses: connection-timeout: username: guest password: guest publisher-confi ...

  7. C#5.0 异步编程 Async和Await--理解异步方法与线程之间的关系

    这次来理解一下异步方法与线程之间的关系 新建一个控制台程序 代码如下 static void Main(string[] args) { Console.WriteLine("\n进入Mai ...

  8. Android Service完全解析(上)

    转载:http://blog.csdn.net/guolin_blog/article/details/11952435 相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Androi ...

  9. docker build 时 alpine 无法安装软件问题的解决

    使用 alpine 作为 docker 基础镜像时,运行 apk add ..... 遇到如下错误: WARNING: Ignoring http://dl-cdn.alpinelinux.org/a ...

  10. 让所有Excel数据格全部乘 某个数

    1  首先设置单元格格式要是数字 2  然后在随便一个单元格写入你要乘的数字 3  粘贴的时候设置选择性粘贴,然后设置乘就OK