V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
EridanusSora
V2EX  ›  Node.js

Node 二进制合并大量文件

  •  
  •   EridanusSora · 2019-01-03 09:05:00 +08:00 via Android · 3992 次点击
    这是一个创建于 2185 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有一个需求,需要把大量文件(数千个)二进制按顺序连接,目前的做法是开一个 write stream 不停往里写入,但是经常 OOM,请问各位有没有什么更好的解决方案,谢谢!
    6 条回复    2019-01-03 10:10:57 +08:00
    whileFalse
        1
    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
        2
    heimeil  
       2019-01-03 09:38:28 +08:00   ❤️ 1
    应该是读的速度太快,写跟不上就 OOM 了,可以看下这里面的 pipe: http://taobaofed.org/blog/2017/08/31/nodejs-stream/
    EridanusSora
        3
    EridanusSora  
    OP
       2019-01-03 09:55:13 +08:00 via Android
    @heimeil 我想也是这个原因。看了下应该就是我想要的解决方案,谢谢!
    matsuz
        4
    matsuz  
       2019-01-03 09:58:13 +08:00   ❤️ 1
    Node 里面我不知道怎么搞,不过其他语言一般是开一个固定大小的 buffer,比如 4KB,每次只读这么多,写入这 4KB 以后再读下一个 4KB
    fanshide
        5
    fanshide  
       2019-01-03 10:05:37 +08:00
    pipe?
    otakustay
        6
    otakustay  
       2019-01-03 10:10:57 +08:00   ❤️ 1
    node 自己的 fs stream 是有 backpressure 处理能力的啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:47 · PVG 03:47 · LAX 11:47 · JFK 14:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.