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的更多相关文章
随机推荐
- Java Map排序
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...
- Eclipse配置Flex开发环境(转)
Eclipse配置Flex开发环境 开发环境:Eclipse3.2.Flex Builder31.下载安装Flex Builder3,下载地址:http://subject.csdn.net/adob ...
- 使用RedisTemplate的操作类访问Redis(转)
深入理解Spring Redis的使用 (三).使用RedisTemplate的操作类访问Redis 事务需要开启enableTransactionSupport,然后使用@transactional ...
- Java:文件类File的详解
File类的常用方法: 1.创建 boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.和输出流不一样,输出流对象一建立创建文件,而 ...
- WEB前端介绍
1.WEB前端是神马 Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征.在互联网的演化进程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为 ...
- hive报错 Another instance of Derby may have already booted the database
刚装好hive后,启动之后showtables;等正常,退出之后再进入,就发现会报错 Caused by: ERROR XSDB6: Another instance ofDerbymay have ...
- libevent系列文章
Libevent 2 提供了 bufferevent 接口,简化了编程的难度,bufferevent 实际上是对底层事件核心的封装,因此学习 bufferevent 的实现是研究 Libevent 底 ...
- 在windows上配置jdk环境
下载和安装的java jdk的步骤此处就忽略了.就从配置jdk配置开始说起: 安装完JDK后配置环境变量 计算机→属性→高级系统设置→高级→环境变量 系统变量→新建 JAVA_HOME 变量 . 变 ...
- Android Calander Event
必须权限 <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-pe ...
- Passing JavaScript Objects to Managed Code
Silverlight If the target managed property or input parameter is strongly typed (that is, not typed ...