Node.js系列笔记-2(不定期更新)

  • Node.js Buffer(缓冲区)
    • 问题来源
      • JavaScript语言自身只有字符串数据类型,没有二进制数据类型
      • 在处理像TCP流或文件流时,必须用到二进制数据
      • 因此在Node.js中,定义了一个Buffer类,用来存放二进制数据
    • 基本情况
      • 在Node.js中,Buffer类是随着Node内核一起发布的核心库
      • Buffer库为Node.js带来了一种存储原始数据的方法
      • 原始数据存储在Buffer类的实例中
      • 一个Buffer类类似于一个整数数组,但它对应于V8堆内存之外的一块原始内存
    • 创建buffer类
      • var buf = new Buffer(10);
      • var buf = new Buffer([10, 20, 30, 40, 50]);
      • var buf = new Buffer("www.google.com", "utf-8");
        • 其他编码格式,ascii utf8 utf16le ucs2 base64 hex ....
    • 写入缓冲区
      • buf.write(string[, offset[, length]][, encoding])
        • string:写入缓冲区的字符串
        • offset:缓冲区开始写入的索引值,默认为0
        • length:写入的字节数,默认为buffer.length
        • encoding:使用的编码,默认为utf8
      • 返回值
        • 返回实际写入的大小,空间不足则写入部分字符串
    • 读取缓冲区
      • buf.toString([encoding[, start[, end]]])
        • encoding:使用的编码,默认utf8
        • start:开始读取的索引位置,默认为0
        • end:结束为止,默认为缓冲区末尾
      • 返回值
        • 解码缓冲区数据并使用指定的编码返回字符串
    • 将Buffer转换为JSON对象
    • 缓冲区合并
    • 缓冲区比较
    • 缓冲区拷贝
    • 缓冲区剪裁
    • 缓冲区长度
    • 方法参考手册:http://www.runoob.com/nodejs/nodejs-buffer.html
  • Node.js Stream
    • 概要
      • Stream是一个抽象接口,Node中许多对象实现了这个接口
      • 如对http服务器发起请求的request对象即是一个stream,还有stdout
    • 四种类型
      • Readable:可读操作
      • Writable:可写操作
      • Duplex:可读可写操作
      • Transform:操作被写入数据,然后读出结果
    • 所有的Stream对象都是EventEmitter的实例,常用事件有:
      • data:当有数据可读时触发
      • end:没有更多的数据可读时触发
      • error:发生错误时触发
      • finish:所有数据被写入到底层系统是触发
    • 读取数据
      •  1 var fs = require("fs");
         2 var data = '';
         3 var readerStream = fs.createReadStream('input.txt');
         4 readerStream.setEncoding('UTF8');
         5 readerStream.on('data', function(chunk){
         6     data += chunk;
         7 });
         8 readerStream.on('end',function(){
         9     console.log(data);
        10 });
        11 readerStream.om('error',function(){
        12     console.log(error.stack);
        13 });
        14 console.log("Success!");
    • 写入数据
      •  1 var fs = require("fs");
         2 var data = "www.google.com";
         3 var writerStream = fs.createWriterStream('output.txt');
         4 writerStream.write(data, 'UTF8');
         5 writerStream.end();
         6 writerStream.on('finish',function(){
         7     console.log("ok");
         8 });
         9 writerStream('error', function(err){
        10     console.log(err.stack);
        11 });
        12 console.log("ok");
    • 管道流
      • 1 var fs = require('fs');
        2 var readerStream = fs.createReaderStream('input.txt');
        3 var writerStream = fs.createWriterStream('output.txt');
        4 readerStream.pipe(writerStream);
        5 console.log("ok");
    • 链式流
posted @ 2016-08-17 16:01  寒汀暮雨钓孤舟  阅读(170)  评论(0编辑  收藏  举报