其中,bufferToCopyTo是要复制的目标Buffer对象。如下示例: 复制代码 代码如下: var buffer1 = new Buffer(8); buffer1.write("nice to meet u","utf8"); var buffer2 = new Buffer(8); buffer1.copy(buffer2); console.log(buffer2.toString());//nice to meet u
流模块 在UNIX类型的操作系统中,流是个标准的概念。有如下三个主要的流: 1.标准输入 2.标准输出 3.标准错误 可读流 如果说,缓冲区是Node.js处理原始数据的方式的话,那么流通常是Node.js移动数据的方式。Node.js中的流是可读的或者可写的。Node.js中许多模块都使用了流,包括HTTP和文件系统。 假设我们创建一个classmates.txt的文件,并从中读入姓名清单,以便使用这些数据。由于数据是流,这就意味着完成文件读取之前,从收到最初几个字节开始,就可以对数据动作,这是Node.js中的一个常见模式: 复制代码 代码如下: var fs = require("fs"); var stream = fs.ReadStream("classmates.txt"); stream.setEncoding("utf8"); stream.on("data", function (chunk) { console.log("read some data") }); stream.on("close", function () { console.log("all the data is read") });
在以上示例中,在收到新数据时触发事件数据。当文件读取完成后触发关闭事件。 可写流 显然,我们也可以创建可写流以便写数据。这意味着,只要一段简单的脚本,就可以使用流读入文件然后写入另一个文件: 复制代码 代码如下: var fs = require("fs"); var readableStream = fs.ReadStream("classmates.txt"); var writableStream = fs.writeStream("names.txt"); readableStream.setEncoding("utf8"); readableStream.on("data", function (chunk) { writableStream.write(chunk); }); readableStream.on("close", function () { writableStream.end(); });