[英]node.js file write position parameter isn't working
我很難讓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,offset,length,position)
正如指向文檔的鏈接所說,第二個參數是一個Buffer
,但在您的代碼中,您傳遞的是一個字符串。 這樣做會導致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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.