Node 二进制合并大量文件

2019-01-03 09:05:00 +08:00
 EridanusSora
现在有一个需求,需要把大量文件(数千个)二进制按顺序连接,目前的做法是开一个 write stream 不停往里写入,但是经常 OOM,请问各位有没有什么更好的解决方案,谢谢!
3766 次点击
所在节点    Node.js
6 条回复
whileFalse
2019-01-03 09:14:05 +08:00
试试命令行?

cat 1.txt 2.txt 3.txt > all.txt
cat 4.txt 5.txt 6.txt >> all.txt
heimeil
2019-01-03 09:38:28 +08:00
应该是读的速度太快,写跟不上就 OOM 了,可以看下这里面的 pipe: http://taobaofed.org/blog/2017/08/31/nodejs-stream/
EridanusSora
2019-01-03 09:55:13 +08:00
@heimeil 我想也是这个原因。看了下应该就是我想要的解决方案,谢谢!
matsuz
2019-01-03 09:58:13 +08:00
Node 里面我不知道怎么搞,不过其他语言一般是开一个固定大小的 buffer,比如 4KB,每次只读这么多,写入这 4KB 以后再读下一个 4KB
fanshide
2019-01-03 10:05:37 +08:00
pipe?
otakustay
2019-01-03 10:10:57 +08:00
node 自己的 fs stream 是有 backpressure 处理能力的啊

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

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

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

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

© 2021 V2EX