的NodeJS filesystem.write位置似乎并没有正常工作
问题描述:
我有以下问题,下面是感兴趣的代码位:的NodeJS filesystem.write位置似乎并没有正常工作
var fs = require('fs');
var fd = fs.openSync('path to file', 'a+');
var buffer = new Buffer('Hello Text');
fs.writeSync(fd, buffer, 0, buffer.length, 42)
fs.close(fd);
至于官方文档告诉我这是怎么了该功能应该被称为:https://nodejs.org/api/fs.html#fs_fs_writesync_fd_buffer_offset_length_position
并尽可能常识和无数试图告诉我现在的位置是“42”或什么位置,我选择的地方有意味着我writeSync
应该开始书面方式在位置42。然而,无一例外,它开始在文件的末尾准备一个换行符。 我甚至尝试使用“遗留”功能fs.writeSync(fd, 'hello string', 42, 'utf-8');
,我仍然得到完全相同的东西。
答
书面文档中:
在Linux上,当文件中 追加模式打开位置写入不起作用。内核忽略位置参数,并始终将数据追加到文件的末尾。
好的......关于如何解决这个问题的任何想法? –
我知道有一个'w'标志,但只是覆盖整个文件。我可以读取文件,存储它,然后撰写一个新文件,但似乎有点慢...慢,迟缓。这是所有服务器端脚本语言处理的问题还是它特定于节点? –
我不使用Linux,所以我不能告诉你。我使用Windows。无论如何,我已经给你回答你的问题。您必须将此标记为正确的答案并打开一个新问题:“如何通过Linux上的Node.js以非追加模式打开文件?”并标记#Linux和#Node.js。疯狂的猜测:你可以尝试异步阅读。你可以在这里阅读关于Linux不同类型的文件打开:http://man7.org/linux/man-pages/man2/open.2.html – Alon