2012-04-20 16 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

1つのディレクトリに冗長ファイルを作成できますか? –

+0

'somedoc.txt'のような'〜somedoc.txt'のようなファイルを意味しますか?もしそうなら、ファイル名が '〜'で始まるかどうかをチェックするだけです。それ以外の場合は、具体的にして、例を挙げてください。 – Thomas

+0

私はインデックス内の単語を検索しており、それに基づいてディレクトリにファイルを作成しているので、冗長ファイルがあります。雅Imeanファイルの内容ではなく、冗長なファイルの内容です。 –

答えて

2

ファイルの名前をキーに使用し、ファイルのチェックサムを値として使用してマップを作成します(これはexampleに従うと、javaを使用してファイルのチェックサムを取得します)。

新しいエントリをマップに追加する前に、計算されたチェックサムが既に存在するかどうかを確認します(2つのファイルに同じチェックサムがある場合、その内容は同じです)。

「冗長」ファイルを削除します。

+0

私は2つのファイルを持っていますが、1つはファイル ""です。もう1つは内容 ""これはファイル ""です。チェックサムは非常に異なっています。ファイル内のデータは同じですが。 –

+0

もちろん。 5回目のコメントでは、Aravind Chintaは「同じ内容」と言っていたので、頭のスペースや後ろのスペースについて何も言及しなかったので、「まったく同じ内容」としました。 – jalopaba

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

...または多分私たちに何が必要かについての詳細を与えます。

+0

たとえば、ile1.txt、file2.txt、file3.txtという3つのファイルがあります。ここで、file1.txtとfile2.txtの内容が同じで、file3.txtの内容が異なるとします。 file1.txtまたはfile2.txtのいずれかを削除します。どうやって? in java –

+0

すべてのファイルの完全な内容をRAMにロードできますか?あなたはそれをする方法を知っていますか? –

+0

いいえRAMDirectoryに何か? –

関連する問題