2013-10-29 103 views
-1

我想比較位於兩個不同文件夾中的文件。 我希望僅比較那兩個不同文件夾中具有相同名稱的文件。比較文件名

我想要做的是比較兩個不同版本的軟件,並找出有多少文件已被更改。

+0

有沒有看過java'File'類,你學到了什麼? – vikingsteve

+1

請發佈迄今爲止您嘗試寫入的Java代碼。 – sdanzig

+3

@MarounMaroun什麼顏色?淡紫色? http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/20000/1000/100/21168/21168.strip.gif –

回答

-1

這將有助於你得到文件兩條路徑:

import java.io.File; 
import java.util.*; 

public class ListFiles 
{ 
    public static void main(String[] args) 
    { 

     // First directory path here. 
     String path1 = "."; 

     // Second directory path here. 
     String path2 = "."; 

     // File class is very important. 
     // If you did a simple Google search 
     // Then you would have seen this class mentioned. 
     File folder1 = new File(path1); 
     File folder2 = new File(path2); 

     // It gets the list of files for you. 
     File[] listOfFiles1 = folder1.listFiles(); 
     File[] listOfFiles2 = folder2.listFiles(); 

     // We'll need these to store the file names as Strings. 
     ArrayList<String> fileNames1 = new ArrayList<String>(); 
     ArrayList<String> fileNames2 = new ArrayList<String>(); 

     // Get file names from first directory. 
     for (int i = 0; i < listOfFiles1.length; i++) 
     { 
      if (listOfFiles1[i].isFile()) 
      { 
       fileNames1.add(listOfFiles1[i].getName()); 
      } 
     } 

     // Get file names from second directory. 
     for (int i = 0; i < listOfFiles2.length; i++) 
     { 
      if (listOfFiles2[i].isFile()) 
      { 
       fileNames2.add(listOfFiles2[i].getName()); 
      } 
     } 

     // Now compare 
     // Loop through the two array lists and add your own logic. 
    } 
} 

您需要添加自己的邏輯來進行比較。 Source

+0

爲什麼downvote? –

-1

我有這樣的代碼,所有的目錄中的文件與一個特定的文件進行比較,以檢查是否該文件已位於存在於目錄中,可以調整這一點,按您的needs.It使用公地io.jar

import java.io.File; 
import java.util.Arrays; 
import java.util.List; 
import java.util.stream.Collectors; 

import org.apache.commons.io.FileUtils; 

public class CompareFile { 

    String directory; 
    File file; 

    public CompareFile(String directory, File file) { 
     this.directory = directory; 
     this.file = file; 
    } 



    public boolean doesFileExist() { 

     boolean indicatorFileExist = true; 
     List<File> files = null; 

     try { 
      files = getFiles(); 
      files = files.stream().filter(fileMatch -> { 
       try { 
        if(fileMatch.isFile()){ 
         return FileUtils.contentEquals(fileMatch, file); 
        }else{ 
         return false; 
        } 

       } catch (Exception excep) { 
        excep.printStackTrace(); 
        return false; 
       } 
      }).collect(Collectors.toList()); 

      if(files.isEmpty()){ 
       indicatorFileExist = false; 
      } 

     } catch (Exception excep) { 
      excep.printStackTrace(); 
     } finally { 
      if (files != null) { 
       files = null; 
      } 
     } 

     return indicatorFileExist; 

    } 

    private List<File> getFiles() { 

     List<File> fileList = null; 

     try { 

      if(directory!=null && directory.trim().length()>0 && file!=null){ 

       File dir = new File(directory); 
       if(dir.isDirectory() && dir.exists() && dir.canRead()){ 
        fileList = Arrays.asList(dir.listFiles()); 
       } 


      } 

     } catch (Exception excep) { 
      excep.printStackTrace(); 
     } 
     return fileList; 
    } 


}