簡體   English   中英

node.js文件寫入位置參數不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM