缓冲区(缓冲区)模块

JS最初设计的浏览器,所以这是很好的处理Unicode编码的字符串,但不能处理二进制数据。这是一个问题因为Node.js Node.js是发送和接收,经常发送二进制格式的数据在网络上的例子:

-通过TCP连接发送和接收数据。

-从图像或压缩文件中读取二进制数据;

-从文件系统读取和写入数据;

-从网络处理二进制数据流

缓冲模块带来了Node.js的方式存储的原始数据,使二进制数据可以用在JS中。可以使用缓存模块,当你需要处理的是移动的我/ O在Node.js运作的数据。

类别:缓冲区

缓冲类是一个全局变量类型,用于直接处理2进制数据,它可以以多种方式构建。

原始数据存储在缓冲类的一个实例中。缓冲区实例类似于整数数组。

1.new缓冲(大小):分配一个新的缓冲区的大小是8个字节的大小。

2.new缓冲(阵列):指定一个新的缓冲区使用8字节的数组。

3.new缓冲(STR,{编码}):编码字符串类型的编码方法和参数是可选的。

4。方法:Buffer.isEncoding(编码):如果给定的编码编码是有效的,返回真,否则返回假。

5。方法:Buffer.isBuffer(obj):测试是否这个obj是一个缓冲区。回到布尔

6。类方法:Buffer.concat(名单,{为}):表{阵}数组类型,缓冲数组,用来连接。所有缓冲区的长度{数量}型缓冲数组的总大小。

除了能够读取文件以获得缓冲区的实例之外,还可以直接构造它,例如:

复制代码代码如下所示:

VaR仓=新的缓冲区({ 0x48,0x65,0x6c,0x6c,0x6c });



缓冲区,像字符串一样,除了可以获得字节长度的长度属性外,还可以通过{ }读取指定位置的字节,例如:

复制代码代码如下所示:

本{ 0 }; / / = > 0x48;



缓冲区和字符串可以互相转换,例如,使用指定的编码将二进制数据转换成字符串:

复制代码代码如下所示:

var str = bin.tostring('utf-8 '); / / = >你好



切片方法不返回到一个新的缓冲区,但更像指向指向原始缓冲区中间位置的指针,如下所示。

复制代码代码如下所示:

1。{ 0x48,0x65,0x6c,0x6c,0x6c }

2。^ ^ ^

三.| |

4。bin bin.slice(2)



写缓冲区

复制代码代码如下所示:

var新缓冲区(缓冲区= 8);创建一个8字节的内存缓冲区

console.log(buffer.write('a','utf8 ')); / /输出1



这将写入的字符进入缓冲区,和节点返回的字节编码成缓冲区的数量,其中一个占用1字节UTF-8编码的信。

复制缓冲区

Node.js提供了一种方法来复制缓冲区对象的整体内容到另一个缓冲区对象。我们只能复制现有的缓冲区对象之间,所以他们必须创造。

复制代码代码如下所示:

Buffer.copy(buffertocopyto)



在这,buffertocopyto是目标缓冲区对象被复制。下面的例子如下:

复制代码代码如下所示:

无功工作=新的缓冲区(8);

buffer1.write(非常漂亮来满足你的'utf8);

var 2 =新的缓冲区(8);

buffer1.copy(2);

console.log(buffer2.tostring()); / /很高兴见到你



流模块

流是UNIX操作系统中的标准概念。主要有以下三个主要流程:

1。标准输入

2。标准输出

三.标准误差

可读流

如果缓冲区是Node.js处理原始数据的方式,然后流的方式通常是Node.js移动数据。Node.js流是可读或可写。在Node.js使用流很多模块,包括HTTP和文件系统。

假设我们创建了一个classmates.txt文件读名单,这样我们就可以使用的数据,因为数据流,这意味着在数据读取,它可以从最初的几个字节的接收数据,这是Node.js的一种常见模式。

复制代码代码如下所示:

VaR FS =需要('fs);

无功流= fs.readstream('classmates .txt);

Stream.setEncoding('utf8);

Stream.on ('data', function (chunk) {

console.log(读取一些数据)

});

Stream.on('关闭',函数(){(){

console.log(所有数据读取的)

});



在上面的示例中,当接收到新数据时触发事件数据。当文件读取完成时触发关闭事件。

可写流

显然,我们还可以创建一个写流来写入数据,这意味着,通过一个简单的脚本,您可以用一个流读取文件并写入另一个文件。

复制代码代码如下所示:

VaR FS =需要('fs);

无功readablestream = fs.readstream('classmates .txt);

无功writablestream = fs.writestream('names .txt);

readablestream.setencoding('utf8);

readablestream.on(数据功能(块){

writablestream.write(块);

});

readablestream.on('关闭',函数(){(){

WritableStream.end();

});



现在,当接收到数据事件时,数据被写入可写流中。

readable.setencoding(编码):返回:这

Readable.resume():同样的,这种方法允许可读流继续触发数据事件。

readable.pause():相同。这种方法会使流量模式流程停止触发数据事件,切换到非流动模式,让后续的数据在内部缓冲区。

类:流。可写。

可写(可写)流接口是您向目标写入的数据的抽象。

1.writable.write(块编码},{ },{回调):

{ } |块字符串缓冲区写数据

如果字符串是字符串,则编码{ } }代码。

回调函数}数据块回写回调

返回:{ }如果数据被处理了所有的真值。

此方法将数据写入底层系统,并在处理完数据后调用给定的回调函数。

2.writable.cork():强行扣留全部写。

被拘留的数据将被写入的时候。开口()或()调用结束被称为。

3.writable.end({块},{编码},{回调})

块{ } |可选字符串缓冲区写数据

如果字符串是字符串,则编码{ } }代码。

回调函数{可选},在流结束后回调

在调用完()之后调用写()生成错误。

复制代码代码如下所示:

写 / /您好,和结束to'world!

http.createserver(功能(REQ,RES){

res.write(你好,);

res.end(‘!');

现在不允许继续写入

});