2016-07-25 41 views
0

我想使用JFileChooser選擇多個文本文件,然後進行比較。 選擇多個文件的代碼如下JFileChooser選擇多個文本文件並對它們進行比較

JFileChooser chooser = new JFileChooser(); 
    chooser.setMultiSelectionEnabled(true); 
    Component frame = null; 
    chooser.showOpenDialog(frame); 
    File[] files = chooser.getSelectedFiles(); 

如何使用文件句柄來比較多個文件。是否可以使用此方法比較多個文本文件? 我有多個文本文件,我想檢查所有文件的內容是否匹配。如果內容完全一樣,我會看到MATCH,如果文本文件不同,我會看到FAIL以及內容的不同。 非常感謝您的幫助

+0

你想比較什麼?文字或文字?請添加更多的細節到您的問題... –

+0

你是什麼意思由「比較」?在控制檯上顯示差異列表(又名'diff')?顯示並排比較(Windows上稱爲WinMerge或Linux上的類似工具)? Java沒有內置任何這些任務。 –

+0

添加了我想要比較的簡要說明。基本上我有多個文本文件,並且我想檢查所有文件的內容是否匹配。如果內容完全一樣,我會看到MATCH,如果文本文件不同,我會看到FAIL以及內容的不同。 – sam

回答

0

使用FileUtils

例如:

for(int i=0; i<files.length-1; i++) 
    for(int j=i+1; j<files.length; j++) 
     if(FileUtils.contentEquals(files[i], files[j])) 
      System.out.println("file #" + i + " and file #" + j + " are identical."; 
     else 
      System.out.println("file #" + i + " and file #" + j + " are different."; 

例如#2 - 不使用 您可以使用this描述的技術外部庫回答。

for(int i=0; i<files.length-1; i++) { 
    for(int j=i+1; j<files.length; j++) { 
     byte[] f1 = Files.readAllBytes(files[i]); 
     byte[] f2 = Files.readAllBytes(files[j]); 

     if (Arrays.equals(f1, f2)) 
      System.out.println("file #" + i + " and file #" + j + " are identical."; 
     else 
      System.out.println("file #" + i + " and file #" + j + " are different."; 
    } 
} 

P.S:既然你沒有在你的問題中提到它,我這裏假設你要比較兩個文件的內容,並確定它們是否相等。

+0

是拉曼,那就是我想要做的。謝謝您的幫助。只是一個查詢,它是否需要特定的Java版本才能工作。 FileUtil無法解析是我面對的錯誤 – sam

+0

您好@sam是否導入FileUtils?像這個'進口org.apache.commons.io.FileUtils;' –

+0

我將不得不單獨下載** org.apache.commons.io.jar **,因爲eclipse沒有給出任何這樣的導入建議現在。我必須製作一個jar文件並將其分發給其他成員,我不確定所有人都會擁有這些文件。除了FileUtils之外,還有其他一些方法。 – sam

相關問題