如何知道nodejs中字节缓冲区内容的实际大小?

lor*_*1an 22 buffer node.js

我将文件作为字节缓冲区,不能使用fs.stat()方法.所以我尝试使用buf.length,但是这个长度是指为缓冲区对象分配的内存量,而不是实际的内容大小.例如,我的文件大小为22,449字节.buf.length返回39804.

std*_*b-- 43

你需要byteLength:

var buff = fs.readFileSync(__dirname + '/test.txt');
console.log( buff.byteLength );
Run Code Online (Sandbox Code Playgroud)

对于节点0.10.21,您可以尝试:

console.log( buff.toString().length );
Run Code Online (Sandbox Code Playgroud)

  • 应该知道 Buffer.byteLength(buff) 和 buff.toString().length 的值可能不同,并且在使用 form-data 上传文件时可能会出现问题。 (3认同)
  • 谢谢, buf.toString('ascii').length 非常适合我 (2认同)
  • 在 Node v13 中,Buffer.byteLength() 是一个实例方法。另外,如果您有多字节字符, buf.toString().length 可能会出现偏差,例如 `Buffer.from("€").length // is 3` (2认同)