在节点js中使用buffer.copy()有什么用?

时间:2017-02-13 13:17:10

标签: javascript node.js

我想知道nodejs应用程序中buffer.copy()的用途是什么。请解释一下任何实时的例子?以及节点js中复制和切片方法之间的区别。它是如何工作的?

2 个答案:

答案 0 :(得分:6)

与字符串不同,Node中的缓冲区是可变的。这意味着您可以创建一个缓冲区,将其传递到其他地方,当它在一个地方被更改时,它将在两个地方都发生变化,这并不总是您想要的。如果你想确保没有任何东西可以改变你的缓冲区,那么你需要复制它。

slice()返回一个新缓冲区,它是旧缓冲区的一部分,类似于slice()对字符串或数组的工作方式。

答案 1 :(得分:3)

buffer.copy()复制缓冲区。 这是一个例子

var buffer1 = new Buffer('ABC');

//copy a buffer
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2 content: " + buffer2.toString());

执行上述程序时,会产生以下结果 -

buffer2 content: ABC

buffer.slice()方法用于获取节点缓冲区的子缓冲区 - 这是一个例子。

var buffer1 = new Buffer('maximizedPoint');

//slicing a buffer
var buffer2 = buffer1.slice(0,9);
console.log("buffer2 content: " + buffer2.toString());

执行上述程序时,会产生以下结果 -

buffer2 content: maximized