2012-04-20 46 views
-1

我想統計沒有發生字符串的文件,並且我有一個目錄中的文檔列表,但它們是多餘的。如何從該特定目錄中刪除重複文件? 任何幫助表示讚賞!如何刪除特定目錄中的重複文件

public static boolean CompareFiles(File x, File y) throws FileNotFoundException 
{ //boolean result=true; 

    try  { 
     Scanner xs = new Scanner(x); 
     Scanner ys = new Scanner(y); 
     boolean result = true; 
     while (result) 
     { 
      if (xs.nextByte() != ys.nextByte()) result = false; 


     } 

return result; 
    } 
catch (FileNotFoundException e) 
{ 
    System.out.println(e.getMessage()); 
    return false; 
} 
} 

public static void main(String[] args) throws FileNotFoundException, IOException//  
    { 

    File dir = new File("C:/Users/Aravind/Documents/ranked"); 
    File[] fileList = dir.listFiles(); 
    for (int x = 0; x <fileList.length; x++) 
    { 
    for (int y = x+1; y < fileList.length; y++) 
    { 
    if (CompareFiles(fileList[x],fileList[y])) 
    { 
     System.out.println("in calling fn"); 
     fileList[x].delete(); 
    } 
     //System.out.println(fileList[x]); 
    } 
} 
+3

您可以在單個目錄中創建冗餘文件嗎? – 2012-04-20 12:23:50

+0

你的意思是像'〜somedoc.txt'這樣的文件,它似乎是'somedoc.txt'等的重複文件嗎?如果是這樣,只要檢查文件名是否以'〜'開頭。否則,請更具體一些,也許提供一個例子。 – Thomas 2012-04-20 12:33:36

+0

我正在索引中搜索一個單詞,並基於該目錄在目錄中創建文件,因此存在多餘的文件。 Ya Imean文件的內容是多餘的,而不是文件的名稱。 – 2012-04-20 12:35:15

回答

2

使用文件名作爲關鍵字並將文件的校驗和作爲值創建一個映射(在此之後使用此example獲取文件的校驗和)。

在向該映射添加新條目之前,請檢查計算出的校驗和是否已經存在,如果兩個文件具有相同的校驗和,則它們的內容相同。

刪除「冗餘」文件。

+0

如果我有兩個文件,一個是內容「這是一個文件」,另一個是內容「這是一個文件」,它們的校驗和會非常不同。即使文件內的數據是相同的。 – 2012-04-20 12:52:58

+0

當然。在第五評論中,Aravind Chinta說「同樣的內容」,所以我假設「完全一樣的內容」,因爲他沒有提及任何關於標題或尾部空格的內容。 – jalopaba 2012-04-20 12:58:53

0
for (File f : dir.listFiles()) if (isDuplicate(f)) f.delete(); 

...也許給我們更多的細節你需要什麼。

+0

例如,我有三個文件ile1.txt,file2.txt和file3.txt。現在假設file1.txt和file2.txt具有相同的內容,而file3.txt具有不同的內容。我想刪除file1.txt或file2.txt中的一個。怎麼樣? in java – 2012-04-20 12:42:59

+0

你可以將所有文件的完整內容加載到RAM中嗎?你知道怎麼做嗎? – 2012-04-20 12:45:46

+0

編號與RAMDirectory有什麼關係? – 2012-04-20 12:47:38

相關問題