如何使用 node.js 读取大文件并不断拉取更改
How to read a large file with node.js, and pull for changes constantly
我想读取一个大文件(最好从末尾开始),然后拉取更改。
例如在ruby中,这很容易。
log_file.seek(0, IO::SEEK_END)
从文件末尾开始
- 循环调用
log_file.each_line { |log| ... }
:添加新行时,将读取它们。
在node.js,我做不到...
大文件部分可以这样管理:
var rl = require('readline').createInterface({
input: require('fs').createReadStream("Client.txt")
});
rl.on('line', function (line) {
console.log('Line from file:', line);
});
这样它就不会一次读取整个文件。
但是如何循环执行呢?这将在文件结束时关闭文件...如果我在循环中有 rl.on('line' ...)
部分,它将不断添加新的侦听器...
有什么解决办法吗?
我发现最好的模块是 text follower。
它基于 fs.watchFile
(通过 watchit)。
在 Windows 和 OSX 上进行了测试。
我想读取一个大文件(最好从末尾开始),然后拉取更改。
例如在ruby中,这很容易。
log_file.seek(0, IO::SEEK_END)
从文件末尾开始- 循环调用
log_file.each_line { |log| ... }
:添加新行时,将读取它们。
在node.js,我做不到...
大文件部分可以这样管理:
var rl = require('readline').createInterface({
input: require('fs').createReadStream("Client.txt")
});
rl.on('line', function (line) {
console.log('Line from file:', line);
});
这样它就不会一次读取整个文件。
但是如何循环执行呢?这将在文件结束时关闭文件...如果我在循环中有 rl.on('line' ...)
部分,它将不断添加新的侦听器...
有什么解决办法吗?
我发现最好的模块是 text follower。
它基于 fs.watchFile
(通过 watchit)。
在 Windows 和 OSX 上进行了测试。