十六、Node.js-fs模块-流
10. fs.createReadStream 从文件流中读取数据
/**
* 之前我们学习过读取文件内容的方法readFile();该方法适合读取文件内容比较少的文件,如果遇到数据量庞大的文件,我们要使用下面的方法
*/
const fs=require('fs');
//流读取文件是一块一块读取的
var readStream=fs.createReadStream("G:/files/dir1/test3.txt");
//每读取一块内容就会产生一个广播data,我们使用on来监听广播data,获取回调函数返回的数据,注意这里只能写成data,下面的其他广播名也一样
let count=0;//声明一个变量用来验证读了多少次
var str='';//用来保存数据,把读取出的一块块数据都拼接到str
readStream.on("data",function (chunk) {
str+=chunk;
count++;
})
//读取完成会广播一个end事件
readStream.on("end",function (chunk) {
console.log(str);
console.log('一共读取了'+count+'次');
})
//读取出错会广播一个error的事件
readStream.on("error",function (err) {
console.log(err);
})
11. fs.createWriteStream 写入流,将数据写入到文件
/**
* 写入流
*/
var writeStream=fs.createWriteStream("G:/files/dir1/test3.txt")
var data='这是将要写入文件的内容';
writeStream.write(data,'UTF8') //标记写入完成,注意标记写入完成之后就没办法继续写入了
writeStream.end(); //只要标记了写入完成就会广播一个finish事件,如果上面没有标记写入完成,就没法广播下面的finish事件
writeStream.on("finish",function () {
console.log('写入完成');
}) //还有写入失败的广播error
writeStream.on("error",function () {
console.log('写入失败');
})
12. 管道流
管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传递到另外一个流中。

如上面的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个
桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。
以下实例我们通过读取一个文件内容并将内容写入到另外一个文件中。
/**
* 管道流
*/
//创建一个读取流
var readStream=fs.createReadStream("G:/files/dir1/test3.txt");
//创建一个写入流
var writeStream=fs.createWriteStream("G:/files/dir2/test1.txt");
//读取流的内容通过管道流写入到输出流
readStream.pipe(writeStream);
十六、Node.js-fs模块-流的更多相关文章
- 从官网学习Node.js FS模块方法速查
最新文档请查看仓库 https://github.com/wangduandu... 1. File System 所有文件操作提供同步和异步的两种方式,本笔记只记录异步的API 异步方式其最后一个参 ...
- Node.js FS模块方法速查
1. File System 所有文件操作提供同步和异步的两种方式,本笔记只记录异步的API 异步方式其最后一个参数是回调函数.回调函数的第一个参数往往是错误对象,如果没有发生参数,那么第一个参数可能 ...
- Node.js——fs模块(文件系统),创建、删除目录(文件),读取写入文件流
/* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创 ...
- node.js中stream流中可读流和可写流的使用
node.js中的流 stream 是处理流式数据的抽象接口.node.js 提供了很多流对象,像http中的request和response,和 process.stdout 都是流的实例. 流可以 ...
- 【node】fs模块,文件和目录的操作
检查文件是否存在,查询文件信息 fs.stat() fs.stat('./server.js', function (err, stat) { if (stat && stat.isF ...
- 理解 Node.js 中 Stream(流)
Stream(流) 是 Node.js 中处理流式数据的抽象接口. stream 模块用于构建实现了流接口的对象. Node.js 提供了多种流对象. 例如,对 HTTP 服务器的request请求和 ...
- Node.js require 模块加载原理 All In One
Node.js require 模块加载原理 All In One require 加载模块,搜索路径 "use strict"; /** * * @author xgqfrms ...
- Node.js Web模块
什么是Web服务器? Web服务器是处理由HTTP客户端发送的,如web浏览器的HTTP请求的软件应用程序,并返回响应于客户端网页. Web服务器通常伴随着图片,样式表和脚本的HTML文档. 大多数W ...
- node.js fs.open 和 fs.write 读取文件和改写文件
Node.js的文件系统的Api //公共引用 var fs = require('fs'), path = require('path'); 1.读取文件readFile函数 //readFile( ...
- Node.js Net 模块
Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/客户端的方法,我们可以通过以下方式引入该模块: var net = require("net") ...
随机推荐
- PyYAML和configparser模块讲解
Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation ymal主要用于配置文件. Co ...
- 从request获取各种路径总结 request.getRealPath("url")
转载:http://blog.csdn.net/piaoxuan1987/article/details/8541839 equest.getRealPath() 这个方法已经不推荐使用了,代替方法是 ...
- C#多线程List的非线程安全性
背景:最近在做多线程方面的工作,工作中发现多线程中很多坑,这里就有一个List添加对象的误区,这里做个分享跟大家讲讲这个坑是怎么形成的怎么样避免. 示例: 代码及错误: 如果单单只从程序逻辑上看,应该 ...
- Java面向对象-对象的多态性
Java面向对象-对象的多态性 Java中的多态性表现: 1,方法的重载和重写(覆盖): 2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现: 我们先搞个父类Animal: ...
- leetcode583
public class Solution { public int MinDistance(string word1, string word2) { , word2.Length + ]; ; i ...
- day16-作业 后台管理
二话不说开撸作业 作业要求: 后台管理平台 ,编辑表格:1. 非编辑模式:可对每行进行选择: 反选: 取消选择2. 编辑模式:进入编辑模式时如果行被选中,则被选中的行万变为可编辑状态,未选中的不改变退 ...
- python:if 语句的使用方法
if-else类型: #if-else num = int(input("输入成绩!")) if num > 60: print ("及格") else: ...
- java之yield(),sleep(),wait()区别详解-备忘笔记(转)
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...
- idata的各个类型
idata是51系列单片机能识别的存储器类型之一,固定指前面0x00-0xff的256个字节的片内RAM,其中前128字节和data的128字节完全相同,只是因为访问的方式不同.idata是用类似C中 ...
- codeforce469DIV2——C. Zebras
题意 0, 010, 01010 这一类的01交替且开头和结尾都为0的序列被称为zebra序列.给出一段01序列,尝试能否把他分为k个子序列使得每个子序列都是zebra序列. 分析 这个题应该算是水题 ...