node.js文件写入位置参数不起作用

per*_*iae 6 javascript node.js

我很难让node.js在正确的位置写入我的文件.这是我的问题的示范案例:

fs = require('fs');
foo = fs.openSync('foo.txt','r+');
fs.writeSync(foo, "hello", 0, 5, 5);
fs.close(foo);
Run Code Online (Sandbox Code Playgroud)

foo.txt 有一行:

12345678901234567890
Run Code Online (Sandbox Code Playgroud)

预期的输出是为了foo.txt包含12345hello1234567890,但我得到了hello678901234567890.我跑node v0.8.16.

这是一个错误,还是我做错了什么?

编辑:我一直在引用这些文档:fs.writeSync(fd,buffer,offset,length,position)

log*_*yth 8

正如文档的链接所说,第二个参数是a Buffer,但是在你的代码中你传递的是一个字符串.这样做会导致Node回退到一个不同的函数签名,该签名是为了向后兼容而存在的.

function(fd, str, position, encoding);
Run Code Online (Sandbox Code Playgroud)

所以传递适当的论点

var buf = new Buffer("hello");
fs.writeSync(foo, buf, 0, buf.length, 5);
Run Code Online (Sandbox Code Playgroud)