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 ...
随机推荐
- c/c++ int 范围的原因
在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用 ...
- JS-text节点模拟innerHTML属性
# [在线预览](https://jsfiddle.net/1010543618/mz7ybu8g/2/) text 节点无 innerHTML 这个属性!!! 如果直接修改 text 节点的属性(d ...
- 论一个PHP项目上线的注意点
一.后端问题 服务器配置要跟上流量 预估QPS时要给足未知流量的空间 后端数据库设计要根据项目大小来相对应,小型流量单表就可以,但是中大型要分库分表 在处理执行修改的操作时一定要多一层判断(判断是否已 ...
- java中接口的简单运用&java中的一些异常(运用myeclipse)
package test;//创建一个名为test的包 public class A4paper implements Paper { public String getSize(){ return& ...
- mybatis自学历程(一)
第一个mybatis程序 IDE:myeclipse2017 jar包:mybatis3.5.2,mybatis依赖包,mysql8.0.17驱动包 注:mybatis包和所需的依赖包,可到http: ...
- Javascript生成器函数
function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数 (generator function),它返回一个Generator 对象 示例: function* g ...
- 從nasm assembly看函數參數傳遞
在淘宝定了<<C++程序设计语言(特别版)>> 后天才能到货.从网上下了<<C++ Primer中文版>>的电子书看看.找找C++的感觉先. 先看看基本 ...
- LeetCode Array Medium 11. Container With Most Water
Description Given n non-negative integers a1, a2, ..., an , where each represents a point at coordin ...
- 记录java ftp下载图片只有96KB的问题
public InputStream downloadFile(String path) { if(StringUtils.isBlank(path)) { return null; } connne ...
- 2018-2-13-win10-uwp-魔力鬼畜
title author date CreateTime categories win10 uwp 魔力鬼畜 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...