-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]);
    }
}
4

2 に答える 2

3

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

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

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

于 2012-04-20T12:47:55.733 に答える
0
for (File f : dir.listFiles()) if (isDuplicate(f)) f.delete();

... または、必要なものの詳細をお知らせください。

于 2012-04-20T12:35:29.950 に答える