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的更多相关文章
随机推荐
- CentOS7安装配置FTP服务器
假设我们有以下要求 路径 权限 备注 /ftp/open 公司所有人员包括来宾均可以访问 只读 /ftp/private 仅允许Alice.Jack.Tom三个人访问 Alice.Jack只允许下载, ...
- .Net MVC视图
1.View显示 return View(): 默认为/Views/<控制器>/<方法> return View("Test"); 显示/View/< ...
- shell进行mysql统计
array=(江苏 浙江 新疆 宁夏 广东 福建 重庆 江西 吉林 湖南 山东 云南 上海 河北 黑龙江 北京 四川 河南 山西 湖北 辽宁 安徽 陕西 广西 贵州 内蒙古 天津 甘肃 海南 青海 ...
- dom4j API使用简介
dom4j API使用简介 功能简介 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极 ...
- JS生成指定长度的随机数
/** * 生成指定长度的UUID * @param len * @param radix * @returns uuid * eg: createUUID(8, 2) "01001010& ...
- hdu1054(二分图匹配)
题意很简单,在一颗树上找最小点覆盖. 将树染成黑白两色,构成一张二分图,然后最大匹配==最小点覆盖即可,所以一次匈牙利就可以求出来了 hdu1054 #include <iostream> ...
- 快速掌握 Android Studio 中 Gradle 的使用方法 [转http://blog.csdn.net/feelang/article/details/41783317]
Gradle是可以用于Android开发的新一代的 Build System, 也是 Android Studio默认的build工具. Gradle脚本是基于一种JVM语言 -- Groovy,再加 ...
- UVa 11137 (完全背包方案数) Ingenuous Cubrency
题意:用13.23……k3这些数加起来组成n,输出总方案数 d(i, j)表示前i个数构成j的方案数则有 d(i, j) = d(i-1, j) + d(i, j - i3) 可以像01背包那样用滚动 ...
- 51nod1537 分解
http://blog.csdn.net/qingshui23/article/details/52350523 详细题解%%%%对矩阵乘法的不熟悉.以及不会推公式 #include<cstdi ...
- wdcp v3 Forbidden :You don't have permission to access /phpmyadmin on this server
First edit the file /www/wdlinux/apache/conf/vhost/00000.default.conf and add the additional line to ...