Arrays 节点JS:导入大数组,然后执行正则表达式

Arrays 节点JS:导入大数组,然后执行正则表达式,arrays,multithreading,node.js,Arrays,Multithreading,Node.js,我正在构建一个命令行工具,并希望在此特定情况下使用Node JS 我有一个TXT文件,我想在每一行上执行正则表达式,并在另一个函数中使用它们 1) 我应该使用readFileSync或readFile将TXT文件导入并转换为数组,然后遍历该数组的元素吗 2) 我应该使用readLines吗 此文件的大小可能高达5 MB,但随着时间的推移,它会越来越大(最多可达100) 3) 我应该使用Python、Ruby或任何其他语言来实现这个特定目的吗?还有其他语言能让它更好吗?(请回答前两个问题,因为我可

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

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

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

2) 我应该使用readLines吗

此文件的大小可能高达5 MB,但随着时间的推移,它会越来越大(最多可达100)

3) 我应该使用Python、Ruby或任何其他语言来实现这个特定目的吗?还有其他语言能让它更好吗?(请回答前两个问题,因为我可能无法不使用节点和选项来处理一些非常不同的问题)

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

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

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

1) 您必须选择readStream:

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

var fs=require('fs'), 承运人=要求(“承运人”), 文件='test.txt', 溪流

stream=fs.ReadStream(文件,{encoding:'UTF-8'}); 载波(流、函数(行){ 用正则表达式(行)提取; });