-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(如果两个文件具有相同的校验和,则它们的内容相同)。

删除“冗余”文件。

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

......或者也许给我们更多关于你需要什么的细节。

于 2012-04-20T12:35:29.950 回答