Brief:
系统将加载CSV文件,但它们预计为巨大(+ 1M行)。我已经知道如何使用队列和后台作业/任务来处理它们。如何知道一个文件中的行数,而不用在JavaScript中将内容加载到内存中?
但是,
我要显示给用户在他的文件中的进度,东西线:2165的1246875也许它的百分比。为了将它存档,我需要知道文件中的行数,但是我必须在不将内容加载到内存中的情况下进行操作,因此只要我上传并且可以将文件名保存在内存中,它就可以很快。在其中找到了全部的行。
在PHP中,这是使用SplFileObject
试图seek()
到PHP_MAX_INT
可能的,那么它进入文件和key()
返回该行它能对最高点的连线。
但是这个系统完全是在JavaScript/Node.js中构建的,所以为了方便起见,我想用JavaScript来构建这个系统部分。
我怎么能做到这一点?已经看过FS API,但没有找到如何去做到这一点。
[编辑]
想法而已:
child_process.exec
+wc -l
(仅针对Unix)- 获得来自客户端使用
FileReader
(代表资源给用户)此信息
您可以读取一些第一行,计算行的平均大小并在其上划分文件大小。 –
有人纠正我,如果我错了,但如果你阅读文件异步,并没有指定文件编码,你只处理块,对吧?那么你可以计算每个块中的换行符并让该块进行垃圾回收吗? –
你不需要计数线。跟踪已处理字节的数量并将其除以文件长度以知道已处理文件的数量。乘以100以百分比表示。 – axiac