Pay*_*Chu 10 filesystems node.js
下面的代码插入somestring到文件中,但也将替换文件中的文本.怎么解决这个问题?
fd = fs.openSync('file', 'r+')
buf = new Buffer('somestring')
fs.writeSync(fd, buf, 0, buf.length, 0)
fs.close(fd)
Run Code Online (Sandbox Code Playgroud)
c.P*_*.u1 16
使用a+标志以追加模式打开文件
var fd = fs.openSync('file', 'a+');
Run Code Online (Sandbox Code Playgroud)
或使用位置write.要能够追加到文件末尾,请使用fs.appendFile:
fs.appendFile(fd, buf, err => {
//
});
Run Code Online (Sandbox Code Playgroud)
写到文件的开头:
fs.write(fd, buf, 0, buf.length, 0);
Run Code Online (Sandbox Code Playgroud)
编辑:
我想没有一个方法调用.但您可以复制文件的内容,写入新数据并附加复制的数据.
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);
Run Code Online (Sandbox Code Playgroud)
请注意,如果这些操作在初始化期间不执行一次,则必须使用这些方法的异步版本,因为它们将阻止事件循环.
对于小文件,你可以这样做:
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'));
Run Code Online (Sandbox Code Playgroud)
希望它对某人有用!