Java 如何从特定目录中删除重复文件

Java 如何从特定目录中删除重复文件,java,duplicate-removal,Java,Duplicate Removal,我想计算没有出现字符串的文件,我有一个目录中的文档列表,但它们是多余的。如何从该特定目录中删除重复文件? 感谢您的帮助 public static boolean CompareFiles(File x, File y) throws FileNotFoundException { //boolean result=true; try { Scanner xs = new Scanner(x); Scanner ys = new Scanner

我想计算没有出现字符串的文件,我有一个目录中的文档列表,但它们是多余的。如何从该特定目录中删除重复文件? 感谢您的帮助

 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]);
    }
}
publicstaticbooleancomarefiles(文件x,文件y)抛出FileNotFoundException
{//布尔结果=真;
试一试{
扫描器xs=新扫描器(x);
扫描器ys=新扫描器(y);
布尔结果=真;
while(结果)
{
如果(xs.nextByte()!=ys.nextByte())结果为false;
}
返回结果;
}
catch(filenotfounde异常)
{
System.out.println(e.getMessage());
返回false;
}
}
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException,IOException//
{ 
文件目录=新文件(“C:/Users/Aravind/Documents/ranked”);
File[]fileList=dir.listFiles();
对于(int x=0;x

…或者提供您需要的更多详细信息。

创建一个映射,使用文件名作为键,文件校验和作为值(使用java获取文件校验和)

在向该映射添加新条目之前,请检查计算出的校验和是否已经存在,包括值(如果两个文件具有相同的校验和,则其内容相同)


删除“多余的”文件。

你能在单个目录中创建冗余文件吗?你是说像
~somedoc.txt
这样的文件似乎与
somedoc.txt
等文件重复吗?如果是这样,只需检查文件名是否以
~
开头。否则,请更具体一些,并提供一个示例。我正在索引中搜索一个单词基于这一点,我在一个目录中创建文件,因此存在冗余文件。我想,文件的内容是冗余的,而不是文件的名称。例如,我有三个文件ile1.txt、file2.txt和file3.txt。现在假设file1.txt和file2.txt中的内容相同,而file3.txt中的内容不同。我想删除其中一个文件例如,我有三个文件ile1.txt、file2.txt和file3.txt。现在假设file1.txt和file2.txt的内容相同,而file3.txt的内容不同。我想删除其中一个file1.txt或file2.txt。如何在java中,您可以将所有文件的完整内容加载到ram中吗?您知道如何删除吗这样做?不。与RAMDirectory有关吗?如果我有两个文件,一个是内容
“这是一个文件”
,另一个是内容
“这是一个文件”
,它们的校验和将非常不同。即使文件中的数据是相同的。当然。在第5条评论中,Aravind Chinta说“相同的内容”,所以我假设“内容完全相同”,因为他没有提到任何关于标题或尾随空格的内容。
for (File f : dir.listFiles()) if (isDuplicate(f)) f.delete();