Nodejs buffer 输出到文件非二进制 求助
Nodejs buffer 输出到文件非二进制 求助
let bufOut = new Buffer(pos);
bufBin.copy(bufOut, 0, 0, pos);
fs.writeFile(’./magic.bin’, bufOut, function(err){
if(err){
console.log(“error”);
}else {
console.log(“ok”);
}
})
为什么文件显示的还是 utf8 编码的类容,还非二进制显示? 输出如下
3_id8_nameSid3_py8_keyword9_costGems8_skillId1I1D1S1B1I2[I61110014soul111941000420004300044000
你要怎样二进制显示呢?
如果你原本的内容就已经是 utf8 文本 就算你用二进制方式编码
fs.writeFile(’./magic.bin’, bufOut, ‘binary’, function(err){
存下来的文件还是文本啊 你里面又没有什么非文本的内容
除非你用 HEX 或者 Base64 编码 那么就会保存成代表二进制你看不懂的文本了 不知道是不是你想要的
你里面又没有 unicode 或者 真正非文本二进制数据
ascii 的文本内容 你怎么存 只要不是 hex 或者 base64 再编码 也还是文本啊
在 Node.js 中,Buffer 对象用于处理二进制数据。如果你想将 Buffer 输出到文件,并且确保它以二进制形式写入,可以使用 fs.writeFileSync
或 fs.writeFile
方法,并指定文件编码为 'binary'
或者更常见的(在写入二进制数据时)省略编码参数,因为默认行为就是写入二进制数据。
以下是一个简单的示例,展示如何将 Buffer 输出到文件并保持其二进制格式:
const fs = require('fs');
// 创建一个示例 Buffer,这里用字符串 "Hello, World!" 转换为 Buffer,实际使用中可能是其他二进制数据
const buffer = Buffer.from('Hello, World!', 'utf8');
// 写入文件,省略编码参数,默认写入二进制数据
fs.writeFile('output.bin', buffer, (err) => {
if (err) throw err;
console.log('Buffer has been written to output.bin');
});
// 或者使用同步方法
try {
fs.writeFileSync('output_sync.bin', buffer);
console.log('Buffer has been written to output_sync.bin synchronously');
} catch (err) {
console.error(err);
}
在上面的代码中,Buffer.from
用于创建一个 Buffer 对象。fs.writeFile
和 fs.writeFileSync
用于将 Buffer 写入文件。注意,在 fs.writeFile
中我们省略了编码参数,这样数据就会以二进制形式写入文件。
如果你遇到非二进制输出的问题,请检查你的写入逻辑,确保没有意外地将数据转换为字符串或其他格式。