java 关于流,这是一个文件合并文件代码。但是为何合并不到10M的文件超级慢。求高手指点一下

package合并文件;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileIn... package 合并文件;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) throws IOException {
Map<String,int[]> map = new HashMap<String,int[]>();

FileOutputStream fos
= new FileOutputStream("ldc.ld");//文件输出流

ObjectOutputStream oos
= new ObjectOutputStream(fos);//对象输出流
for(int i=0;i<2;i++){//遍历合并文件-1
String path[]="快速记事.txt,刘东才.txt".split(",");//要合并的文件
File file
= new File(path[i]);//文件路径

FileInputStream fis
= new FileInputStream(file);//输入流中

BufferedInputStream bis
= new BufferedInputStream(fis);//将流放置缓冲
int b =-1;
int[] data ={};//默认空数组
while((b=bis.read())!=-1){
data=Arrays.copyOf(data, data.length+1);//如果发现bis.read不是-1数组扩容1
data[data.length-1]=b;//将获得的字节码放置int data[]数组中
}

bis.close();

map.put(file.getName(),data);//写入map集合中

}//遍历合并文件结束-1

oos.writeObject(map);//输出对象

oos.close();

System.out.println("完成");
}
}
展开
 我来答
En_苍澜
推荐于2016-07-13
知道答主
回答量:10
采纳率:0%
帮助的人:5.2万
展开全部
data=Arrays.copyOf(data, data.length+1);
这句话 如果数组长度太长了的话,是会费时间的,更何况在一个while里面
追问
兄弟,你终于来了,是一个map对象map String装文件名,integer将的是字节码,有没有办法帮我加速
追答
你不要读一个,然后data=Arrays.copyOf(data, data.length+1);这样,你可以一次read(byte[] b, 
int off, int len) 读取多个字符,然后存到目标文件里面,byte[] b这个数组可以自己定义长度
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式