该方法只适用于小文件
public class TestMerage {
/*
文件合并(采用文件追加的方式)
1.检验参数
2.遍历src文件
3.逐个读src文件内容写入dest文件
*/
public static void merge(String[] srcFiles, String destFilepath) {
long start = System.currentTimeMillis();
if(srcFiles==null||destFilepath==null){
throw new IllegalArgumentException("参数不能为空");
}
for (int i = 0; i <srcFiles.length ; i++) {
File srcFile = new File(srcFiles[i]);
File destFile = new File(destFilepath);
if(!destFile.getParentFile().exists()){
destFile.getParentFile().mkdirs();
}
FileOutputStream fileOutputStream = null;
FileInputStream fileInputStream = null;
try {
fileOutputStream = new FileOutputStream(destFile,true);
fileInputStream = new FileInputStream(srcFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
byte[] data = new byte[1024];
int len ;
try {
len = fileInputStream.read(data);
fileOutputStream.write(data,0,len);
fileInputStream.close();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
long end =System.currentTimeMillis();
System.out.println("merage合并所需时间为:"+(end-start));
}
方法2
public static void merge1(String[] srcFiles,String destFiles) {
long start = System.currentTimeMillis();
if (srcFiles == null || destFiles == null) {
throw new IllegalArgumentException("参数不能为空");
}
for (int i = 0; i < srcFiles.length; i++) {
File srcFile = new File(srcFiles[i]);
File destFile = new File(destFiles);
if(!destFile.getParentFile().exists()){
destFile.getParentFile().mkdirs();
}
byte[] data = new byte[10];
int len;
try(OutputStream outputStream = new FileOutputStream(destFile,true);
InputStream inputStream = new FileInputStream(srcFile);) {
while ((len=inputStream.read(data))!=-1){
try {
outputStream.write(data,0,len);
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
long end = System.currentTimeMillis();
System.out.println("merage1合并所需时间为:"+(end-start));
}