node.js如何将string插入到文件的开头但不能replace原始文本?

下面的代码插入somestring文件,但也将取代文件内的文本。 如何解决这个问题?

 fd = fs.openSync('file', 'r+') buf = new Buffer('somestring') fs.writeSync(fd, buf, 0, buf.length, 0) fs.close(fd) 

       

网上收集的解决方案 "node.js如何将string插入到文件的开头但不能replace原始文本?"

使用a+标志以附加模式打开文件

 var fd = fs.openSync('file', 'a+'); 

或者使用位置write 。 为了能够附加到文件结尾,使用fs.appendFile

 fs.appendFile(fd, buf, err => { // }); 

写入文件的开头:

 fs.write(fd, buf, 0, buf.length, 0); 

编辑:

我想这不是一个简单的方法。 但是,您可以复制文件的内容,写入新的数据,并附加复制的数据。

 var data = fs.readFileSync(file); //read existing contents into data var fd = fs.openSync(file, 'w+'); var buffer = new Buffer('New text'); fs.writeSync(fd, buffer, 0, buffer.length, 0); //write new data fs.writeSync(fd, data, 0, data.length, buffer.length); //append old data // or fs.appendFile(fd, data); fs.close(fd); 

请注意,如果这些操作在初始化期间只执行一次,则必须使用这些方法的asynchronous版本,因为它们将阻止事件循环。

用小文件你可以这样做:

 let logPath = path.join(appPath, 'deploy.log'); let logRows = fs.readFileSync(logPath).toString().split('\n'); logRows.unshift('Your string here'); fs.writeFileSync(logPath, logRows.join('\n')); 

希望这对某个人有用!