节点.fs使用一个巨大的目录

用大量的文件来画一个目录。 作为一个粗略的衡量标准,我认为到目前为止我们所看到的最多的是几百万,但从技术上讲,可能会再次上涨。 使用节点,我想从这个目录读取文件,处理它们(基本上是上传),然后把它们移出目录。 很简单。 在应用程序运行时不断添加新文件,而我的工作(就像一艘正在沉没的船上的人)正在填充这个目录。

那么我有什么select? fs.readdir 并不理想 ,它fs.readdir所有的文件名加载到内存中,这样就会成为一个问题。 特别是随着新文件被添加,所以这将需要重复的呼叫。 (以后有人提到这个问题,有人提出来解决这个问题,而这个问题可能在你的时间表内实现,也可能没有实现。)

我已经看了很多fs的插件(graceful-fs,chokadir,readdirp等等),其中没有一个在他们的职权范围内有这个特定的用例。

我也遇到了一些人认为这可以用child_process来处理,还有一个叫做inotifywait的包装器,它和我所要求的完全一致,但我真的不明白这是如何解决潜在的问题,特别是在这个比例。

我想知道我真正需要做的是find一种方法来从目录中获得第一个文件(或者说,真实的一批文件),而不必将整个目录结构读入内存。 某种types的stream可以在读取一定数量的文件后终止? 我知道Go有一个参数用于读取目录中的前n个文件,但是我找不到一个相当的节点,这里有没有人遇到过或有任何有趣的想法? 在这一点上,左场解决scheme更受欢迎!

您可以使用您的操作系统列表文件命令,并将结果传输到NodeJS。

例如在Linux中:

 var cp=require('child_process') var stdout=cp.exec('ls').stdout stdout.on('data',function(a){ console.log(a) });0 

RunKit: https ://runkit.com/aminanadav/57da243180f3bb140059a31d