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

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

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

foo.txt有一行:

 12345678901234567890 

期望的输出是foo.txt包含12345hello1234567890 ,而是我得到hello678901234567890 。 我正在运行node v0.8.16

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

编辑:我一直在引用这些文档: fs.writeSync(fd,缓冲区,偏移量,长度,位置)

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

 function(fd, str, position, encoding); 

所以传递正确的论点

 var buf = new Buffer("hello"); fs.writeSync(foo, buf, 0, buf.length, 5); 

这里是Node.js源代码所说的:

LIB \ fs.js

  fs.writeSync = function(fd, buffer, offset, length, position) { if (!Buffer.isBuffer(buffer)) { // legacy string interface (fd, data, position, encoding) position = arguments[2]; buffer = new Buffer('' + arguments[1], arguments[3]); offset = 0; length = buffer.length; } if (!length) return 0; return binding.write(fd, buffer, offset, length, position); }; 

如果仔细观察,如果第二个参数不是缓冲区,那么位置将变为偏移量 ,偏移量将变为0