1. 程式人生 > >對大文件實現分割及合並處理

對大文件實現分割及合並處理

i++ sed length nbsp lose num tput 指定 output

 1   public void cutFile(File bigFile,File destFile,int cutSize){
 2 
 3         FileInputStream inputStream = null;
 4         int size = 1024*1024; //1M
 5         try {
 6             if (!destFile.isDirectory()){ //如果保存分割文件的地址不是路徑
 7                 destFile.mkdir(); //創建路徑
 8             }
 9             size = size * cutSize; //
分割文件大小以M為單位 10 int length = (int) bigFile.length(); //獲取大文件大小(B為單位) 11 int num = length / size; //計算分割成小文件的個數(每個小文件大小是M為單位) 12 int yu = length % size; //除余的文件大小(M) 13 14 String bigFilePath = bigFile.getAbsolutePath(); //獲取大文件完整路徑信息(包括文件名) 15 int fileNew = bigFilePath.lastIndexOf("."); //
獲取文件後綴前的“."的索引 16 String suffix = bigFilePath.substring(fileNew,bigFilePath.length()); //獲取後綴,即文件類型 17 18 inputStream = new FileInputStream(bigFile); //獲取大文件的文件輸入流 19 File[] smallFile = new File[num+1]; //創建保存小文件的文件數組 20 int begin = 0; 21 for (int
i =0;i< num;i++){ 22 smallFile[i] = new File(bigFile.getAbsolutePath()+"\\"+(i+1)+suffix+".tem"); //指定小文件的名字 23 if (!smallFile[i].isFile()){ 24 smallFile[i].createNewFile(); //創建該文件 25 } 26 FileOutputStream outputStream = new FileOutputStream(smallFile[i]); //創建小文件的文件輸出流 27 byte[] small = new byte[size]; 28 inputStream.read(small); //讀取小文件字節 29 outputStream.write(small); //向小文件中寫入字節數據 30 begin = begin + size; 31 outputStream.close(); 32 } 33 if (yu != 0){ ///除余的文件大小(M)部不為空 34 smallFile[num] = new File(bigFile.getAbsolutePath()+"\\"+(num+1)+suffix+".tem"); 35 if (!smallFile[num].isFile()){ 36 smallFile[num].createNewFile(); //創建文件 37 } 38 FileOutputStream outputStream = new FileOutputStream(smallFile[num]); 39 byte[] bytes = new byte[yu]; 40 inputStream.read(bytes); //讀取字節 41 outputStream.write(bytes); //向文件寫入數據 42 outputStream.close(); 43 } 44 }catch (Exception e){ 45 e.printStackTrace(); 46 } 47 }

2.合並處理

 1   public void closeFile(File[] files,File closeDir,String hz){
 2         try {
 3             File closeFile = new File(closeDir.getAbsoluteFile()+"\\close"+hz); //指定合並後的文件名(包含路徑)
 4             if (!closeFile.isFile()){
 5                 closeFile.createNewFile(); //創建文件
 6             }
 7 
 8             FileOutputStream outputStream = new FileOutputStream(closeFile); //創建文件輸出流
 9             for (int i=0;i<files.length;i++){
10                 FileInputStream inputStream = new FileInputStream(closeFile); //創建文件輸入流
11                 int len = (int) files[i].length(); //獲取單個子文件大小
12                 byte[] bytes = new byte[len];
13                 inputStream.read(bytes);
14                 outputStream.write(bytes);
15                 inputStream.close();
16             }
17             outputStream.close();
18         }catch (Exception e){
19             e.printStackTrace();
20         }
21     }

對大文件實現分割及合並處理