node.js 从文件流中读写数据及管道流
读取数据
// 引入 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 从文件流中读写数据及管道流的更多相关文章
- Node.js躬行记(1)——Buffer、流和EventEmitter
一.Buffer Buffer是一种Node的内置类型,不需要通过require()函数额外引入.它能读取和写入二进制数据,常用于解析网络数据流.文件等. 1)创建 通过new关键字初始化Buffer ...
- Node.js写文件的三种方法
Node.js写文件的三种方式: 1.通过管道流写文件 采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐) var readStream = fs. ...
- Node.js读取文件内容
原文链接:http://blog.csdn.net/zk437092645/article/details/9231787 Node.js读取文件内容包括同步和异步两种方式. 1.同步读取,调用的是r ...
- Python StringIO实现内存缓冲区中读写数据
StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的“文件”,我们可以像操作磁盘文件那样来操作StringIO.这篇文章主要介绍了Python StringIO模块,此模块 ...
- 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 ...
- node.js的fs核心模块读写文件操作 -----由浅入深
node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFil ...
- node.js grunt文件压缩
对于前段来说,熟悉node的人其实还并不是太多,如果您想入门一门后端语言我建议还是从node入手最好. 我也是最近开始学习node,来谈谈近期对node的学习的心得. 提到node首先就是要安装一大堆 ...
- 使用node.js的bodyParser中间件读取post数据解析
昨天我们使用的网关转发数据时出了点问题! 情景是这样的,另一方以Post的形式向我的node.js服务推送JSON数据.但是使用bodyParser中间件后,在req.body中拿不到任何信息. 代码 ...
- 字符串流sstream[part2/使用同一个字符串流反复读写数据]
stringstream构造函数会特别消耗内存,似乎不打算主动释放内存(或许是为了提高效率),如果你要在程序中使用同一个流反复读写大量数据,将会造成大量的内部消耗,因此建议: 1:调用clear ...
随机推荐
- 测试过程中bug分类
测试的核心任务是发现bug.在这之前是分析需求,之后是跟踪bug.跳出具体的项目来看,所有的bug无非是以下五大类. 软件没有实现应该实现的功能:如指定的登录功能. 软件出现了本应该避免的错误:如用户 ...
- Supervisord rce(CVE-2017-11610)
POST /RPC2 HTTP/1.1 Host: localhost Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compati ...
- Example of dynamic programmatic description
- Suppose there are some itineraries in the Itinerary page, and you want to check on all of them. Se ...
- Java.io包
Java.io.BufferedInputStream 类添加功能到另一个输入流,缓冲输入以及支持mark和reset methods.Following是关于缓冲输入流的要点: 当创建缓冲输入,创建 ...
- python获取沪股通、深股通、港股通每日资金流向数据
接口:moneyflow_hsgt 描述:获取沪股通.深股通.港股通每日资金流向数据,每次最多返回300条记录,总量不限制. 注:tushare模块下载和安装教程,请查阅我之前的文章 输入参数 名称 ...
- 三、hibernate中持久化类的使用
hibernate的持久化类 持久化:将内存中的一个对象持久化到数据库中的过程,hibernate就是一个用来进行持久化的框架 持久化类:一个Java对象与数据库中表建立了关系映射,那么这个类在hib ...
- junit单元测试报错Failed to load ApplicationContext,但是项目发布到tomcat浏览器访问没问题
junit单元测试报错Failed to load ApplicationContext,但是项目发布到tomcat浏览器访问没问题,说明代码是没问题的,配置也没问题.开始时怀疑是我使用junit版本 ...
- linux sed删除^M换行符以及^[[转义字符
1. 删除文档中的蓝色转义字符^M 注意:^M 不能从键盘输入^和M,也不能复制.而是需要按Ctrl+v 然后再按Ctrl+M 按Ctrl+v的时候屏幕不会输出,再按下Ctrl+M的时候即会出现^M ...
- Codeforces 1167F 计算贡献
题意:给你一个函数f,计算∑(i = 1 to n)(j = i to n) f(i, j).f(i, j)的定义是:取出数组中i位置到j位置的所有元素,排好序,然后把排好序的位置 * 元素 加起来. ...
- 一些笔记jexcel
根据坐标或者指定列标题 jexcel.getColumnNameFromId([ x, y ]);