Node.js将一行写入.txt文件

Met*_*ion 37 fs node.js

我想创建一个简单的日志系统,它使用Node.js将过去行之前的行打印到txt文件中,但我不知道Node.js的文件系统是如何工作的.有人可以解释一下吗?

Leo*_*tny 89

将数据插入文本文件的中间并不是一项简单的任务.如果可能,您应该将其附加到文件的末尾.

追加数据的一些文本文件,最简单的方法是使用内置的fs.appendFile(filename, data[, options], callback)功能fs模块:

var fs = require('fs')
fs.appendFile('log.txt', 'new data', function (err) {
  if (err) {
    // append failed
  } else {
    // done
  }
})
Run Code Online (Sandbox Code Playgroud)

但是如果你想多次将数据写入日志文件,那么最好使用fs.createWriteStream(path[, options])函数代替:

var fs = require('fs')
var logger = fs.createWriteStream('log.txt', {
  flags: 'a' // 'a' means appending (old data will be preserved)
})

logger.write('some data') // append string to your file
logger.write('more data') // again
logger.write('and more') // again
Run Code Online (Sandbox Code Playgroud)

每次您打电话时.write,Node都会继续将新数据附加到您的文件中,直到您的应用程序关闭,或者直到您手动关闭要调用的流.end:

logger.end() // close string
Run Code Online (Sandbox Code Playgroud)

  • `write` 会换行吗? (2认同)

mic*_*lem 9

只需使用fs模块和类似的东西:

fs.appendFile('server.log', 'string to append', function (err) {
   if (err) return console.log(err);
   console.log('Appended!');
});
Run Code Online (Sandbox Code Playgroud)


Yen*_*atu 5

步骤1

如果你有一个小文件将所有文件数据读入内存

第2步

将文件数据字符串转换为数组

步骤3

搜索数组以找到要插入文本的位置

步骤4

确定位置后,插入文本

yourArray.splice(index,0,"new added test");
Run Code Online (Sandbox Code Playgroud)

步骤5

将数组转换为字符串

yourArray.join("");
Run Code Online (Sandbox Code Playgroud)

步骤6

像这样写你的文件

fs.createWriteStream(yourArray);
Run Code Online (Sandbox Code Playgroud)

如果您的文件太大,不建议这样做