0

我正在构建一个命令行工具,并希望在这种特殊情况下使用 Node JS。

我有一个 TXT 文件,我想在每行上执行正则表达式并在另一个函数中使用它们。

1) 我是否应该使用 readFileSync 或 readFile 将 TXT 文件导入转换为 ARRAY,然后遍历该数组的元素?

2) 我应该使用 readLines 吗?

该文件的大小可能高达 5 MB,但随着时间的推移它会变得越来越大(最多数百个)。

3) 我应该为此特定目的使用 Python、Ruby 或任何其他语言吗?任何其他语言会使其变得更好吗?(请回答前两个问题,因为我可能无法使用不使用节点和选择不同的东西)

最终,我希望所有这些数据都存储在内存中,以便在不同时间重复使用,所以任何其他解决方案,只要它会很快,我都可以考虑。

非常感谢。

4

1 回答 1

0

3) 你应该使用异步的东西,比如 Node.js。好处是您可以读取文件的一部分并在现场处理它(但在这种情况发生时不会阻塞整个应用程序并且不会缓冲整个文件),然后移动到下一个块,依此类推。如果您愿意,您可以随时暂停直播。

2)我认为你应该逐行阅读(然后处理)文件。

1)你绝对应该选择一个readStream:http ://nodejs.org/docs/v0.6.18/api/fs.html#fs_class_fs_readstream

这样您就不必等待整个文件被读取(并保存在内存中)。这是关于如何使用 readStream 和运营商 (https://github.com/pgte/carrier) 实现这一目标的小片段:

var fs = 要求('fs'),运营商 = 要求('运营商'),文件 = 'test.txt',流;

stream = fs.ReadStream(file, { encoding: 'UTF-8' }); 运营商.carry(流,函数(行){extractWithRegex(行);});

于 2012-05-24T14:44:18.317 回答