乐趣区

关于html5:Nodejs处理数据IO

在 JavaScript 中,对于字符串的操作曾经非常便捷,不存在二进制数据类型,这些对字符串的简略操作和 DOM 操作基本上曾经能够满足前端的需要了,然而 Node.js 中提供了解决文件和 I / O 的性能,因而须要解决大量的二进制数据。而在 Node.js 中 Buffer 和 Stream 文件流对二进制数据的解决提供了很好的反对

Buffer 缓存区

Buffer 类是随着 Node.js 内核一起公布的外围库,用于反对 I / O 操作中挪动的数据处理。Buffer 类为 Node.js 提供了一种存储原始数据的办法,该办法用来在内存中创立一个专门寄存二进制数据的缓存区,也就是说预留了肯定的存储空间在内存中,用来临时保留输出或者输入的数据,这样 Node.js 也能够解决二进制游戏数据

先说 二进制,二进制是计算机技术中宽泛采纳的一种数制,是用 0 和 1 两个数码来示意的数据,因为计算机只能辨认二进制数据,而人们很难看懂那些 0 和 1 的组合代表什么,所以就须要将二进制数据转换为人们可能辨认的字符,这就须要设置字符编码,通过字符编码找到相应的字符集进行转换,最远书的字符编码就是 ASCII

再说 Buffer 的构造函数

new Buffer(array)

new Buffer(size)

new Buffer (str[,encoding])

new Buffer (Buffer)

new Buffer (arrayBuffer)

能够看出,参数别离是字节,数组,buffer 对象,字符串等等

再比方 写入读取的语法:

write(string[,offset[,length]][,encoding])

toString([encoding,state[,end]])

concat(list[,totallength])

Stream 文件流

因为 Buffer 缓存区限度在 1GB,超过 1GB 的文件无奈间接实现读写,在读写大文件时,如果读 / 写资源始终继续不停,那么 Node.js 就无奈持续其余的工作,为此,Node.js 提供了 Stream 文件流模块

最现实的办法 www.sangpi.com 就是,读一部分,写一部分,不管文件的大小,只是工夫的问题,总会解决实现,这就须要用到流的概念

文件 A 通过流动的模式通过数据流管道,进入文件 B 中,采纳“读一部分。写一部分”的形式,流的益处就是,接管方能够提前解决,缩短工夫,进步速度,就像在线看视频,并不是全副缓存好了再播放,而是看一部分,缓存一部分

Stream 四种流类型

Readable

Writable

Duplex

Transform

而在应用大文件复制时,通过可读流的 chunk 参数传递数据,chunk 就像接数据的盆,在可读流中还有一个函数叫 pipe(),这个函数是一个很高效的文件解决形式,能够简化之前复制文件的操作,所以,应用 pipe 进行实现数据的读取和写入也是很重要的

退出移动版