Node.js将一行写入.txt文件
我想创build一个简单的日志系统,它使用Node.js在过去的行之前打印一行到一个txt文件,但我不知道如何从Node.js的文件系统工作。 有人可以解释吗?
将数据插入到文本文件的中间不是一件简单的事情。 如果可能的话,你应该把它追加到文件的末尾。
追加数据一些文本文件最简单的方法是使用fs
模块的 fs.appendFile(filename, data[, options], callback)
函数 :
var fs = require('fs') fs.appendFile('log.txt', 'new data', function (err) { if (err) { // append failed } else { // done } })
但是如果你想多次写入数据到日志文件,那么最好使用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
每次调用.write
,节点都会继续向文件附加新数据,直到您的应用程序closures,或者直到您手动closuresstream调用.end
:
logger.end() // close string
简单地使用fs
模块和这样的东西:
fs.appendFile('server.log', 'string to append', function (err) { if (err) return console.log(err); console.log('Appended!'); });
如果你想实现一个日志系统,我build议你看看Bunyan软件包。
步骤1
如果你有一个小文件读取所有的文件数据到内存
第2步
将文件数据string转换为数组
第3步
search数组以查找要插入文本的位置
步骤4
一旦你有位置插入你的文字
yourArray.splice(index,0,"new added test");
第5步
将你的数组转换为string
yourArray.join("");
第6步
像这样写你的文件
fs.createWriteStream(yourArray);
如果你的文件太大,不build议这样做