gpt4 book ai didi

node.js - 为什么 fs.write 中的 offset 参数不适用于缓冲区,但适用于字符串

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:04 24 4
gpt4 key购买 nike

我遇到了 fs.write(fd, buffer, offset, length,position,callback) 的问题;

如果我这样做:

var fs = require('fs');
var fd = fs.openSync('./test', 'w');
var firstString = '012';
var secondString = 'hello';

fs.writeSync(fd, firstString, 0, firstString.length);
fs.writeSync(fd, secondString, 2, secondString.length);

文件“test”的内容是:“01hello”,正如预期的那样

但如果我这样做

var fs = require('fs');
var fd = fs.openSync('./test', 'w');
var firstBuffer = new Buffer('012');
var secondBuffer = new Buffer('hello');

fs.writeSync(fd, firstString, 0, firstBuffer.length);
fs.writeSync(fd, secondString, 2, secondBuffer.length);

文件“test”的内容是“012”,我收到以下错误:

fs.js:429
return binding.write(fd, buffer, offset, length, position);

Error: off + len > buffer.length
at Object.fs.writeSync (fs.js:429:18)
[...]

您能解释一下为什么我遇到缓冲区错误吗?

最佳答案

感谢您的回答,我发现当您给出字符串或缓冲区时存在差异:位置参数不同。

对于字符串,位置参数是数字 2:

fs.writeSync(fd, secondString, 2, secondString.length);

对于缓冲区,位置参数是数字 4,如文档所述:

fs.writeSync(fd, secondBuffer, 0, secondBuffer.length, 2);

非常感谢您的帮助。

关于node.js - 为什么 fs.write 中的 offset 参数不适用于缓冲区,但适用于字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21023264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com