node.js - 在nodejs中处理非常大的文件
问题描述
我必须读取一个非常大的文件(14 GB),需要逐行处理它,然后需要将该行写入一个单独的文件中。
我最初的计划是读取整个文件,fs.readFileSync
然后用新行拆分它,然后一次处理一行。但是很快我就遇到了一个问题,即由于 v8 的限制,我无法将整个文件读入内存,而且最重要的是,即使我可以达到我机器的 ram 限制的限制。
有什么办法可以解决这个问题?
我可以将文件分成更小的块并以这种方式处理吗?
或者可能有很多选项可以在 nodejs 中处理这种情况。
解决方案
您可以尝试新的数据流解决方案,它是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 文件进行测试,但您仍然可以尝试实现它。
推荐阅读
- sql - SQLite 查找带有两个“a”字母的单词
- sql - 在文本字符串中搜索特定单词 - SQL
- modelica - 新 Dymola UI 中的变量菜单在哪里?
- r - 如何删除 data.table 的不均匀列中的重复值?
- oauth-2.0 - 在 JHipster 中使用 Keycloak 扩展用户实体
- javascript - 如何限制鼠标点击复选框并从JS触发?
- excel - 如何创建一个 VBA 函数,该函数将从 excel 中选择值并“可拖动”(即基于活动单元格将具有不同的输入)
- c# - 如何生成长度小于/大于长度的字符串
- android - 设备处于空闲模式时不调用位置结果回调
- ios - 使用 Braintree SDK 在 Paypal 结帐中添加运费