首页 > 解决方案 > 在nodejs中处理非常大的文件

问题描述

我必须读取一个非常大的文件(14 GB),需要逐行处理它,然后需要将该行写入一个单独的文件中。

我最初的计划是读取整个文件,fs.readFileSync然后用新行拆分它,然后一次处理一行。但是很快我就遇到了一个问题,即由于 v8 的限制,我无法将整个文件读入内存,而且最重要的是,即使我可以达到我机器的 ram 限制的限制。

有什么办法可以解决这个问题?

我可以将文件分成更小的块并以这种方式处理吗?

或者可能有很多选项可以在 nodejs 中处理这种情况。

标签: node.js

解决方案


您可以尝试新的数据流解决方案,它是EventStream. 这是一个流行的 NPM 模块,每周下载量超过 200 万。

请参阅 NPM事件流https ://www.npmjs.com/package/event-stream 。

您也可以阅读这篇文章:https ://itnext.io/using-node-js-to-read-really-really-large-files-pt-1-d2057fe76b33

这也描述了你的代码被剪断的样子。该流仅使用 2.55 GB 文件进行测试,但您仍然可以尝试实现它。


推荐阅读