Nodejs_day03
1.Stream (流)
Stream有四种流类型
1.Readable - 可读操作
2.Writable - 可写操作
3.Duplex - 可读可写操作
4.Transform - 操作被写入数据,然后读出结果
所有的Stream对象都是EventEmitter的实例,
常用的事件:
1.data - 当有数据可读时触发,
2.end - 没有更多的数据可读时触发
3.error - 在接收和写入的过程中发生错误时触发
4.finish - 所有数据已被写入到底层系统时触发
一.从流中读取数据
var fs = require('fs')
var data = '';
//创建可读流
var readerStream = fs.createReadStream('test.txt')//读取test.txt中的内容
//设置编码为utf8
readerStream.setEncoding('UTF8')
//处理流事件,也就是开始读取文档
readerStream.on('data',function(chunk){
data += chunk;//chunk就是读取的文档内容
})
readerStream.on('end',function(){
console.log(data)//当读取完成时,输出读取的内容
})
readerStream.on('error',function(){
console.log(err.stack)//当读取过程总出现错误,将错误输出
})
console.log('程序执行完毕!')
var fs = require('fs')
var data = '我是李亚杰,正在学习nodejs'
//创建一个可写入的流
var writeStream = fs.createWriteStream('out.txt')//将数据写入到out.txt,如果out.txt文件不存在,则自动创建
//使用utf8编码写入数据
writeStream.write(data,'UTF8')
//标记文件末尾
writeStream.end()
//处理流事件
writeStream.on('finish',function(){
console.log('写入完成')
})
writeStream.on('error',function(err){
console.log(err.stack)
})
console.log('程序写入完毕')
管道流
var fs = require('fs')
var readerStream = fs.createReadStream('test.txt')
var writeStream = fs.createWriteStream('b.txt')
readerStream.pipe(writeStream)//将读取出的内容写入到b.txt中
链式流
//拿文件压缩来举例
var fs = require('fs')
var zlib = require('zlib')
fs.createReadStream('input.txt')//需要压缩的文件input.txt
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('input.txt.gz'))//压缩之后的文件
console.log('压缩成功')
//解压
var fs = require('fs');
var zlib = require('zlib')
fs.createReadStream('input.txt.gz')//读取压缩的文件
.pipe(zlib.createGunzip())
.pipe(fs.createWriteStream('input.txt')//将内容解压到input.txt文件中
console.log('解压成功')
Nodejs_day03的更多相关文章
随机推荐
- wrong number of arguments,java方法反射时数组参数的坑
java方法中只有一个参数是数组,反射的时候我们不能想当然的传歌数组进去,传数组进去的时候表示多个参数. 两个数组不是一个意思啊. 我们应该把数组转为objet,这样才表示一个参数. import j ...
- How to write a product backlog step by step
一般来说,制定发布计划是在尝试回答这个问题:“最晚到什么时候为止,我们可以交付这个新系统的1.0版本“ 下面是验收标准规则的一个例子: 1. 所有重要性>=100的条目都必须在1.0版中发布. ...
- View页面根据权限显示不同的内容
1.View中根据权限显示相关操作按钮 @if (CoreTools.CheckAction(HttpContext.Current, "Delete")) { ...
- How to: Run Tests from Microsoft Visual Studio
https://msdn.microsoft.com/en-us/library/ms182470.aspx Running Automated Tests in Visual Studio Visu ...
- hadoop优点和缺点
l扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据. l成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据.这些服务器群总计可达数 ...
- HeadFirst Jsp 11 (部署WEB应用)
web 应用的目录结构要求很严, 各个内容只能放在它该放的地方, 所以, 移动一个web应用很让人头疼. 不过还是有办法, WAR文件, 代表web 归档, WAR其实就是一个JAR归档. 建立 WA ...
- jsonp从服务器读取数据并且予以显示
之前看了许多的关于jsonp的文章,大多是讲的比较的模糊的,下面是我的个人的理解! 基于这样的一段代码,做下解释: 这是在jsonp中读取数据的时候(取出来当然是json的格式json格式不清楚的,可 ...
- jquery ajax的async属性的理解
$(function(){ queryTemplateSort(); // fillAddTemplatePage(); function queryTemplateSort() { $.ajax({ ...
- Machine Learning for hackers读书笔记(七)优化:密码破译
#凯撒密码:将每一个字母替换为字母表中下一位字母,比如a变成b. english.letters <- c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' ...
- LA 3027 Corporative Network
这题感觉和 POJ 1988 Cube Stacking 很像,在路径压缩的同时递归出来的时候跟新distant数组 我发现我一直WA的原因是,命令结束是以字母o结束的,而不是数字0!! //#def ...