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的更多相关文章
随机推荐
- Oracle 全文索引相关命令
--用sys用户登录,解锁ctxsys用户alter user ctxsys account unlock; --授权给对应用户grant execute on ctx_ddl to yw; --用y ...
- Oracle ->> 查看分区表的每个分区的数据行分布情况
ora_hash函数用来返回分区号,而dbms_rowid.rowid_object()函数用来返回object_id , ) part_id ,count(*) from sales_fact_pa ...
- 动态网页制作PHP常用的正则表达式
匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内): [^x00-xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空行的正则表达 ...
- Eclipse项目内存溢出解决方案
方法一: 打开eclipse,选择Window--Preferences...在对话框左边的树上双击Java,再双击Installed JREs,在右边选择前面有对勾的JRE,再单击右边的“Edit” ...
- RTC系统【转】
http://blog.csdn.net/fanqipin/article/details/8089995 转自:http://www.cnblogs.com/muhuacat/p/5276306.h ...
- 解决 iReport 生成 pdf 时显示不出中文的问题
有没有遇到这样的情况:在使用 iReport 做报表时,用pdf预览显示不出中文? 解决步骤是这样的: 1.加入jar包 下载两个jar包:itextasian.jar 和 itext-x.y.jar ...
- SCSS(SASS、CSS)学习
看的这篇文章 http://www.frostsky.com/2014/07/sass-scss/ 写的还比较清晰 SASS是CSS3的一个扩展,增加了规则嵌套.变量.混合.选择器继承等等.通过使用命 ...
- 动态设置easyui datagrid URL
动态设置easyui datagrid URL$('#tt').datagrid({url:'website/jsp/servlet', queryParams:{method:'xx' ...
- POJ 1458 最长公共子序列
子序列就是子序列中的元素是母序列的子集,且子序列中元素的相对顺序和母序列相同. 题目要求便是寻找两个字符串的最长公共子序列. dp[i][j]表示字符串s1左i个字符和s2左j个字符的公共子序列的最大 ...
- UploadifyAPI-上传插件属性和方法介绍
上一篇文章简单的介绍了Uploadify上传插件的使用.但是对于常用的属性和方法并没有说明.授人以鱼不如授人以渔,我决定将常用的属性列举出来,供大伙参考参考. Uploadify属 ...