Buffer
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
Buffer对象占用的内存空间是不计算在Node.js进程内存空间限制上的,因此,我们也常常会使用Buffer来存储需要占用大量内存的数据。
简单的读写例子
结果
1. 创建
常用from方法创建Buffer类
Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例
Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例
也可以这样创建
先定义buffer对象的长度,再用write方法写入内容。
2. 读取
buf.toString([encoding[, start[, end]]])
编码默认utf8,起始位置默认0,结束位置默认末尾。
运行输出 “012”。
toJSON可以返回JSON格式
{ type: 'Buffer',data: [ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 ] }
3. 合并
Buffer.concat(list[, totalLength])
list - 用于合并的 Buffer 对象数组列表。
totalLength - 指定合并后Buffer对象的总长度。
结果就是“aaabbb”。
4. 比较
buf.compare(otherBuffer)
很简单,两个完全相等则返回0。
5. 拷贝,裁剪
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
buf.slice([start[, length]])
感觉用不太到,做个记录。
Stream
所有的 Stream 对象都是 EventEmitter 的实例
基本用法就是这些
参考资料
http://www.runoob.com/nodejs/nodejs-buffer.html
http://www.runoob.com/nodejs/nodejs-stream.html