十六、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") ...
随机推荐
- Java标准I/O流介绍
1.I/O是什么? I/O 是Input/Output(输入.输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出. 2.流 流是一个连续的数据流,可以从流中读取数据,也可以往流中写数据.流与 ...
- vsftpd设置被动模式
完整配置 listen=yes listen_port= max_clients= max_per_ip= local_max_rate= anonymous_enable=no local_enab ...
- Py修行路 python基础 (十四)递归 及 面向对象初识及编程思想
一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策略时,必须有一个明确的递归结束条件 ...
- EF中新建表和关联表的方法
以机场表为例 private static AIRPORT_HELIPORTManager AirportHeliportManager => ManagerFactory.Instance.A ...
- java-虚拟机-索引
底层 JVM之堆内存(年经代,老年代) Java内存泄露的理解与解决 内存溢出和内存泄漏的区别.产生原因以及解决方案 JVM内容梳理 Jvm的体系结构
- SMO是英文SQL Server Management Objects的缩写(上一篇文章的补充)
最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见, ...
- Python模块及其导入
一.模块 1.模块的定义: 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少, 很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件 ...
- Docker镜像加速 | Docker 中国源 | 仓库
镜像加速 | Docker 中国https://www.docker-cn.com/registry-mirror
- 用java和汇编开发一个hello world系统内核
- 当集合里存储的是URL时的一些问题总结
先看道题吧: package com.lk.C; import java.net.MalformedURLException; import java.net.URL; import java.uti ...