无涯教程:Node.js - Streams
2021/8/19 8:06:24
本文主要是介绍无涯教程:Node.js - Streams,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Stream流是使您可以连续地从源读取数据或将数据写入目标的对象,在Node.js中,有四种类型的流-
Readable - 用于读取操作的流。
Writable - 用于写操作的流。
Duplex - 可用于读取和写入操作的流。
Transform - 一种双工流,其中基于输入来计算输出。
每种类型的流都是一个 EventEmitter 实例,例如,一些常用事件是-
data - 当有可读取的数据时,将触发此事件。
end - 当没有更多数据可读取时,将触发此事件。
error - 接收或写入数据时发生任何错误。
finish - 当所有数据都已刷新到系统时,将触发此事件。
本教程提供了对流上常用操作的基本了解。
读取流
创建一个名为learnfk.txt的文本文件,其内容如下:
Learnfk is giving self learning content to teach the world in simple and easy way!!!!!
使用以下代码创建一个名为main.js的js文件-
var fs=require("fs"); var data='';//Create a readable stream var readerStream=fs.createReadStream('learnfk.txt');//Set the encoding to be utf8. readerStream.setEncoding('UTF8');//Handle stream events --> data, end, and error readerStream.on('data', function(chunk) { data += chunk; }); readerStream.on('end',function() { console.log(data); }); readerStream.on('error', function(err) { console.log(err.stack); }); console.log("Program Ended");
现在运行main.js以查看输出-
$node main.js
验证输出。
Program Ended Learnfk is giving self learning content to teach the world in simple and easy way!!!!!
写入流
使用以下代码创建一个名为main.js的js文件-
var fs=require("fs"); var data='Simply Easy Learning';//Create a writable stream var writerStream=fs.createWriteStream('output.txt');//Write the data to stream with encoding to be utf8 writerStream.write(data,'UTF8');//Mark the end of file writerStream.end();//Handle stream events --> finish, and error writerStream.on('finish', function() { console.log("Write completed."); }); writerStream.on('error', function(err) { console.log(err.stack); }); console.log("Program Ended");
现在运行main.js以查看输出-
$node main.js
验证输出。
Program EndedWrite completed.
现在打开在当前目录中创建的output.txt;它应包含以下内容-
Simply Easy Learning
管道流
管道是一种机制,我们将一个流的输出作为另一流的输入,它通常用于从一个流中获取数据并将该流的输出传递到另一流,管道操作没有限制。现在,我们将展示一个管道示例,该示例用于读取一个文件并将其写入另一个文件。
使用以下代码创建一个名为main.js的js文件-
var fs=require("fs");//Create a readable stream var readerStream=fs.createReadStream('lernfk.txt'); //Create a writable stream var writerStream=fs.createWriteStream('output.txt'); //Pipe the read and write operations//read input.txt and write data to output.txt readerStream.pipe(writerStream); console.log("Program Ended");
现在运行main.js以查看输出-
$node main.js
验证输出。
Program Ended
打开在当前目录中创建的output.txt;它应包含以下内容-
Leanrfk is giving self learning content to teach the world in simple and easy way!!!!!
链接流
链接是一种将一个流的输出连接到另一流并创建多个流操作的链的机制,通常用于管道操作,现在,我们将使用管道和链接来压缩文件,然后将其解压缩
使用以下代码创建一个名为main.js的js文件-
var fs=require("fs"); var zlib=require('zlib'); //Compress the file input.txt to input.txt.gz fs.createReadStream('input.txt') .pipe(zlib.createGzip()) .pipe(fs.createWriteStream('input.txt.gz')); console.log("File Compressed.");
现在运行main.js以查看输出-
$node main.js
验证输出。
File Compressed.
您会发现input.txt已被压缩,并在当前目录中创建了文件input.txt.gz。现在让我们尝试使用以下代码解压缩同一文件-
var fs=require("fs"); var zlib=require('zlib'); //Decompress the file input.txt.gz to input.txt fs.createReadStream('input.txt.gz') .pipe(zlib.createGunzip()) .pipe(fs.createWriteStream('input.txt')); console.log("File Decompressed.");
现在运行main.js以查看输出-
$node main.js
验证输出。
File Decompressed.
这篇关于无涯教程:Node.js - Streams的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15useCallback教程:React Hook入门与实践
- 2024-11-15React中使用useContext开发:初学者指南
- 2024-11-15拖拽排序js案例详解:新手入门教程
- 2024-11-15React中的自定义Hooks案例详解
- 2024-11-14受控组件项目实战:从零开始打造你的第一个React项目
- 2024-11-14React中useEffect开发入门教程
- 2024-11-14React中的useMemo教程:从入门到实践
- 2024-11-14useReducer开发入门教程:轻松掌握React中的useReducer
- 2024-11-14useRef开发入门教程:轻松掌握React中的useRef用法
- 2024-11-14useState开发:React中的状态管理入门教程