zoukankan      html  css  js  c++  java
  • 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('解压成功')

  • 相关阅读:
    系统架构师学习笔记_第十一章(下)
    通过IronRuby和C#学习RUBY系列[0]
    TIPS to comment your code
    超级简单:DIV布局
    js 查询XML数据添加到HTML select控件
    《架构之美》读书笔记(一)
    18个不常见的C#关键字,您使用过几个?
    如何成为人尽皆知的C#开发人员
    实现Visual Studio 2010一个很简单的很酷的扩展
    一种简单的直观的高效的权限设计
  • 原文地址:https://www.cnblogs.com/liyajie/p/4811675.html
Copyright © 2011-2022 走看看