node.js - 文件大小(6003804160)大于可能的缓冲区:节点中的 2147483647
问题描述
尝试在 node.js 中读取文件大小为 5GB 时出现此错误:
错误: RangeError [ERR_FS_FILE_TOO_LARGE]:文件大小(6003804160)大于可能的缓冲区:2147483647 字节
fs.readFile(tempfile, "utf8", function(err, filebuffer) {
console.log(err,"filebuffer " ,filebuffer);
})
请提出解决方案。
解决方案
2147483647 字节是 Buffer 在 NodeJS 中可以拥有的最大大小。请注意,此操作将一次将文件的所有内容加载到内存中。您确定要将 5gb 的数据推送到内存中吗?
如果您需要读取比这更大的文件,则需要使用fs.createReadStream
function 而不是fs.readFile
. fs.createReadStream
允许您将文件“拆分”为小(er)块并一次读取一个块。
推荐阅读
- php - preg_match_all 用于反斜杠 [\] 和 [u002F]
- authentication - 将其他社交帐户连接到登录用户
- google-sheets - 如果文本包含(过滤或查询),则按具有 2 个字段的数组过滤
- c - 有没有更有效的方法来反转十进制数?
- dictionary - 为映射键分配了多少内存?即 map[uint16]uint16 将是每个键 2 个字节还是存储为 uint32/64 无论如何?
- android - Firebase 身份验证在手机上不起作用,但在计算机浏览器上工作正常
- ios - flutter 和 firebase_messaging - 如何修复极值缓慢构建?
- c++ - 更改 CListCtrl 中复选框的颜色
- sql-server - 未找到成员(HRESULT 异常:0x80020003 DISP_E_MEMBERNOTFOUND 使用 Visual Studio2019 社区
- python - Python请求响应中的希伯来语?