考虑以下Node.js Javascript程序:
var fs = require('fs');
var encoding1='?';
var encoding2='?';
var a = fs.readFileSync('./testdoc.pdf');
var b = new Buffer(fs.readFileSync('./testdoc.pdf',encoding1),encoding2);
console.log(a===b);
为了在控制台上打印 true ,必须设置 encoding1 和 encoding2 变量的值?
答案 0 :(得分:1)
a.equals(b)
对于像PDF这样的二进制数据,您应该使用"binary"
编码,但没有编码会使任何两个缓冲区与===
运算符相等,因此a === b
将始终为您提供false
。您需要使用a.equals(b)
来测试两个缓冲区是否具有相同的内容。
请参阅文档中的buf.equals(otherBuffer)
:
请参阅此代码:
var fs = require('fs');
var encoding1 = 'binary';
var encoding2 = 'binary';
var a = fs.readFileSync('./testdoc.pdf');
var b = new Buffer(fs.readFileSync('./testdoc.pdf', encoding1), encoding2);
console.log('Object equality:', a === b);
console.log('Buffer equality:', a.equals(b));
它将打印:
Object equality: false
Buffer equality: true