首页新闻找找看学习计划

Java怎么高效合并多个大byte数组

0
悬赏园豆:100 [待解决问题]

做大文件下载功能,把大文件分割多个byte数组,发现合并byte数组效率很慢

Lzhan的主页 Lzhan | 初学一级 | 园豆:14
提问于:2019-10-28 10:06
< >
分享
所有回答(4)
0

换个思路,不要合并。 byte[][] 用一个list存每次下载到的byte[]数组,然后提供方法可以像访问数组一样访问你的这个list<byte[]>对象。

czd890 | 园豆:8081 (大侠五级) | 2019-10-28 11:02
0

干嘛要合并?是说写入io的时候吗.
每个流都有对应的位置.每个流改定位到计算好的位置.
流写入:1 2
文件位:|10001000|10001001
第二个计算下位置直接往IO写入就行.

吴瑞祥 | 园豆:28736 (高人七级) | 2019-10-28 12:22
0

不合并,你先预分配磁盘空间,然后按照byte数组所在的位置,将这些数组写到文件上去。
你要合并数组的话,首先,虚拟机要先分配足够大的内存,接着再拷贝一遍所有用到的byte数组,如果文件比较大,那虚拟机的内存管理工作还是有点多。效率自然慢了。

c99 | 园豆:1838 (小虾三级) | 2019-11-01 11:48
0

直接通过文件输出流FilterInputStream写到磁盘中,输出流的write方法需要的参数本身就是byte数组

ki16 | 园豆:217 (菜鸟二级) | 2019-11-22 15:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册