Node.js Stream(流)--文件操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Node.js Stream(流)--文件操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2085字,纯文字阅读大概需要3分钟。
内容图文
Node.js中的Stream 有四种流类型:
-
Readable - 可读操作。
-
Writable - 可写操作。
-
Duplex - 可读可写操作.
-
Transform - 操作被写入数据,然后读出结果。
所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:
-
data - 当有数据可读时触发。
-
end - 没有更多的数据可读时触发。
-
error - 在接收和写入过程中发生错误时触发。
-
finish - 所有数据已被写入到底层系统时触发。
先创建一个test.txt
cyy在学习node.js
然后是main.js
var fs=require("fs"); var mydata=""; //创建可读流 var stream=fs.createReadStream("test.txt"); //设置编码 stream.setEncoding("utf8"); stream.on("data",function(data){ mydata+= data; }) stream.on("end",function(){ console.log(mydata); }) stream.on("error",function(err){ console.log(err.stack); }) console.log("读取文件结束");
打印结果:
写入流(写入文件)
mian.js
var fs=require("fs"); var mydata="这是我要写入文件的内容"; //创建可读流 var stream=fs.createWriteStream("test.txt"); //设置编码 stream.write(mydata,"utf8"); stream.end();//标记文件末尾 stream.on("finish",function(){ console.log("写入结束"); }) stream.on("error",function(err){ console.log(err.stack); }) console.log("操作结束");
然后查看刚才的test.txt
这是我要写入文件的内容
管道流(文件内容复制)
管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传递到另外一个流中。
首先test.txt
这是在test.txt中的内容
然后test2.txt为空
main.js
var fs=require("fs"); var mydata="这是我要写入文件的内容"; //创建可读流 var stream=fs.createReadStream("test.txt"); //创建可写流 var stream2=fs.createWriteStream("test2.txt"); stream.pipe(stream2); console.log("复制结束");
此时查看原本为空的test2.txt
这是在test.txt中的内容
链式流(可用于解压缩文件)
链式是通过连接输出流到另外一个流并创建多个流操作链的机制。链式流一般用于管道操作。
首先压缩文件操作:
var fs=require("fs"); var zlib=require("zlib"); //压缩 fs.createReadStream("test.txt") .pipe(zlib.createGzip()) .pipe(fs.createWriteStream("test.txt.gz")); console.log("压缩结束");
然后是解压操作:
var fs=require("fs"); var zlib=require("zlib"); //解压 fs.createReadStream("test.txt.gz") .pipe(zlib.createGunzip()) .pipe(fs.createWriteStream("test3.txt")); console.log("解压结束");
内容总结
以上是互联网集市为您收集整理的Node.js Stream(流)--文件操作全部内容,希望文章能够帮你解决Node.js Stream(流)--文件操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。