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