node js 解压大文件有什么好的解决方案吗?

2017-08-22 16:15:52 +08:00
 hoythan

最近在做 electron 项目,需要兼容 windows 和 macos 系统,使用了很多例如 admzip 等开源项目,但是它们都是加载到内存中处理,导致会提示 Array buffer allocation failed

不知道大文件应该如何处理 2-5gb ? 请问有啥好的解决方案吗

3892 次点击
所在节点    Node.js
26 条回复
hoythan
2017-08-23 15:28:48 +08:00
@jianguiqubaa 还是会报错 Array buffer allocation failed 唉,昨天一天没试出来
hoythan
2017-08-23 15:30:02 +08:00
@jianguiqubaa 在 fs.createReadStream(filePath) 的时候就报错了
jianguiqubaa
2017-08-23 17:11:17 +08:00
@hoythan

贴代码出来看看
hoythan
2017-08-23 17:27:12 +08:00
@jianguiqubaa 在 electron 中非常正经的使用解压功能,在 windows 系统下
```
fs.createReadStream(filePath).pipe(
tar.x({
strip: 1,
C: 'C:\\Users\\hoyt\\Desktop\\'
})
)
```
hoythan
2017-08-23 17:27:41 +08:00
@hoythan 我可能需要 path.normalize 一下 C? 但是小文件没毛病
jianguiqubaa
2017-08-23 18:43:08 +08:00
@hoythan

看了 node-tar 的源码,写入文件的时候各种 writeSync。。。我也是醉了

换这个吧: https://github.com/mafintosh/tar-fs

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/384885

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX