该方法只适用于小文件
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)); }