2015-10-29 132 views
19

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

+0

所以,你要插入一行到中间一个文本文件,对吧?最后添加字符串会更容易。 –

+0

是的,好的,我怎么能在最后追加一个字符串? – Meterion

+0

[如何附加到Node中的文件?]可能的重复(http://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) –

回答

48

将数据插入文本文件的中间并不是一件简单的工作。如果可能的话,你应该把它追加到文件的末尾。

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

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

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

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时间您的文件,直到你的应用程序将被关闭,或者直到你手动关闭流CAL林志玲.end

logger.end() // close string 
+0

有必要保存文件 ?如果我使用fs.appendFile,那么文件仍然是空的? – Meterion

+0

'appendFile'会打开文本文件,追加新数据,然后保存。所以,不,你不需要自己保存。它的文件是空的,请尝试检查'appendFile'回调中的'err'。 –

+0

感谢您提及一次和多次选项。 –

1

只需使用fs模块是这样的:

fs.appendFile('server.log', 'string to append', function (err) { 
    if (err) return console.log(err); 
    console.log('Appended!'); 
}); 
0

如果你想实现一个日志系统,我建议你看一看Bunyan包。

1

步骤1

如果你有一个小文件 读取到内存中

步骤2

转换文件中的数据字符串转换成数组

所有文件数据第3步

搜索阵列找到一个位置,你要插入文本

步骤4

一旦你的位置插入文本

yourArray.splice(index,0,"new added test"); 

步骤5

将你的数组转换为字符串

yourArray.join(""); 

步骤6

写你的文件,像这样

fs.createWriteStream(yourArray); 

如果您的文件过大这是不建议