java中,mergeFiles方法實現多個文件內容合並


  首先,說一下我寫這篇文章的目的:最近,領導分配一個任務給我,讓我把多個文件中的編碼進行一個一個執行,光一個文件夾里就有40多個文件,況且還是30多個文件,這樣一個一個執行要浪費多少時間和精力。

  無奈,只能自己找點java方法,來減少工作量。

  所以,我打算將文件夾下所有文件的內容集中在一個文件內,可以一次執行完。

  特此,把我找來的方法與大家分享,但是這個並不是我的原創。

  首先:建立java項目的目錄以及jar包(jre的內部包,無需自己查找)如下:

java方法實現將文件中的內容進行合並(第二個文件所有內容插在第一個文件的末尾,依次類比),方法如下:

15 public class test {
16     public static final int BUFSIZE = 1024 * 8;
17     @SuppressWarnings("resource")
    //outFile合並后的內容要存入的文件,files目標文件集(文件合並的方法)
18 public static void mergeFiles(String outFile, String[] files) { 19 FileChannel outChannel = null; 20 out.println("Merge " + Arrays.toString(files) + " into " + outFile); 21 try { 22 outChannel = new FileOutputStream(outFile).getChannel(); 23 for (String f : files) { 24 Charset charset = Charset.forName("utf-8"); 25 CharsetDecoder chdecoder = charset.newDecoder(); 26 CharsetEncoder chencoder = charset.newEncoder(); 27 FileChannel fc = new FileInputStream(f).getChannel(); 28 ByteBuffer bb = ByteBuffer.allocate(BUFSIZE); 29 CharBuffer charBuffer = chdecoder.decode(bb); 30 ByteBuffer nbuBuffer = chencoder.encode(charBuffer); 31 while (fc.read(nbuBuffer) != -1) { 32 bb.flip(); 33 nbuBuffer.flip(); 34 outChannel.write(nbuBuffer); 35 bb.clear(); 36 nbuBuffer.clear(); 37 } 38 fc.close(); 39 } 40 out.println("Merged!! "); 41 } catch (IOException ioe) { 42 ioe.printStackTrace(); 43 } finally { 44 try { 45 if (outChannel != null) { 46 outChannel.close(); 47 } 48 } catch (IOException ignore) { 49 } 50 } 51 } 52 53 public static void main(String[] args) { //main方法 54 String sourceDir = "G:\\org\\zy141230\\"; 55 File[] file = (new File(sourceDir)).listFiles(); //獲取文件夾sourceDir下所有文件 56 //String[] result=new String[]{file.toString()}; 57 //file=file.toString(); 58 ArrayList<String> list = new ArrayList<String>(); //String類型的數組 59 String [] strs = new String[file.length]; //可以定義動態的String數組 60 for (int i = 0; i < file.length; i++) { 61 // list.add(sourceDir + file[i].getName()); 62 strs[i] = sourceDir + file[i].getName(); //將信息存入文件的String數組 63 } 64 /*for (int i = 0; i < strs.length; i++) { //驗證,數組能否正常輸出 65 //System.out.println(strs[i]); 66 }*/ 67 // list.toArray(); 68 mergeFiles("G:\\finish\\zy141230\\606_177052856.lst", strs);  //將strs中文件集合到G:\\finish\\zy141230\\606_177052856.lst文件中 69 } 70 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM