十六、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") ...
随机推荐
- 1046 Shortest Distance
题意:给出一个环和结点之间的距离,求任意两结点之间的最近距离.如图: 思路:令数组dis[i]表示1号结点逆时针至i号结点的距离,初始化dis[1]=0,其他值在输入是确定,即 dis[i] 0 1 ...
- PL/SQL 训练11--包
--所谓包,就是把一组PL/SQL的代码元素组织在一个命名空间下.--一种可以把程序或者其他的PL/SQL元素比如游标.类型.变量的组织结构在一起的结构(包括逻辑结构和物理结构)--包提供了非常重要的 ...
- Excel开发学习笔记:查找与创建worksheet
开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 如题,我在ThisWorkbook.vb中添加了一个public函数来 ...
- 解决JAVA_HOME nor the JRE_HOME environment variable is defined
从别的地方复制了一个tomcat, 启动后一闪即退, 使用记事本打开 startup.bat文件, 在文件底部修改, 并追加如下内容 call "%EXECUTABLE%" run ...
- python中对 函数 闭包 的理解
最近学到 函数 闭包的时候,似懂非懂.迷迷糊糊的样子,很是头疼,今天就特意查了下关于闭包的知识,现将我自己的理解分享如下! 一.python 闭包定义 首先,关于闭包,百度百科是这样解释的: 闭包是指 ...
- 第一章 走进Java(待续)
·········
- JavaScript第二节
1.动态属性 引用类型可以动态的添加属性,而基本类型不行. 2.复制变量值 3.检测类型 执行环境和作用域 没有块级作用域 引用类型 1.Object类型 2.Array类型 数组初始化: 检测数组: ...
- HTML_基础篇
一.HTML的概述 什么是HTML? html:Hyper Test Markup Language 超文本标记语言(它不是编程语言!) 超文本:功能比普通的文本更加强大. 标记语言:使用一组标签对内 ...
- Perl 数据类型:标量、数组、哈希
Perl 数据类型Perl 是一种弱类型语言,所以变量不需要指定类型,Perl 解释器会根据上下文自动选择匹配类型. Perl 有三个基本的数据类型:标量.数组.哈希.以下是这三种数据类型的说明: 序 ...
- Unity3D Asset 导入&导出
[Unity3D Asset 导入&导出] 通过Assets->Export Package..菜单可以导出当前选中Assets.若没有选中Assets,则会导出全部assets. 在弹 ...