【问题标题】:Comparing Files in 2 directories比较 2 个目录中的文件
【发布时间】:2017-12-09 14:39:38
【问题描述】:

我有这段代码可以告诉我这两个文件是否具有相同的内容。但是,我想将其扩展为不仅仅是一个文件,而是目录 Files。换句话说,将一个文件夹中的文件与另一个文件夹中的文件进行比较,看看它们是否具有相同或不同的内容,如果是,则将其打印出来。

这样做只是修改目录路径的问题吗?我的代码如下。我想我记得在某处我可能需要导入另一个库。任何帮助将不胜感激。

现在我遇到的问题是从相同和不同的区域打印出文件名我尝试过 .getName 它不起作用我的结果回来了(真)(而不是名称满足条件的文件个数

代码如下

import java.io.File;

public class F2FCompare {

 public static void main(String[] args) 
    {    
     File folderA = new File("C:/Users/hoflerj/Desktop/FolderA");
     File[] listOfFilesInA = folderA.listFiles();

     File folderB = new File("/C:/Users/hoflerj/Desktop/FolderB");
     File[] listOfFilesInB = folderB.listFiles();   

     for (File fileA : listOfFilesInA){
         if (fileA.isFile()) 
         {
             for (File fileB : listOfFilesInB) {
                  if(fileB.isFile()) 
                    {
                      if ( fileA.equals(fileB)) 
                      {
                          System.out.println( "FolderA same as FolderB" + listOfFilesInA.equals(listOfFilesInB) );
                          //File[] files = folder.listFiles(); 
                      }

                     // txtfile.getName()
                      else  
                      {
                          //System.out.println(! fileA.getName().equals(fileB) + "    Folder A diff B" );
                          System.out.println( "Folder same as FolderB  " + !fileA.getName().equals(fileB) );
                      }



                    }
                } 
            }
        }
    }
}

【问题讨论】:

标签: java


【解决方案1】:

尝试改变:

if(line1 == null || line2 == null)

为:

if((line1 == null && line2 != null) || (line2 == null && line1 != null))

【讨论】:

    【解决方案2】:

    此代码将遍历文件夹 A 中的每个文件,并将其与文件夹 B 中的每个文件进行比较。

    File folderA = new File("/Users/you/folderA/");
    File[] listOfFilesInA = folderA.listFiles();
    File folderB = new File("/Users/you/folderB/");
    File[] listOfFilesInB = folderB.listFiles();    
    for (File fileA : listOfFilesInA) {
        if (fileA.isFile()) 
        {
            for (File fileB : listOfFilesInB) {
                 if(fileB.isFile()) 
                 {
                    //your code 
                 }
             } 
        }
    }
    

    感谢 David Robles:https://stackoverflow.com/a/1844695/4788664

    【讨论】:

    • 我相信这会奏效。我知道我必须添加我的代码来比较我的逻辑,但是 eclipse 在这个语句中的 file 一词下放了一条红线( if (file.isFile()) )。这应该是fileA这个词吗?
    • 是的,我的错。我在sn-p中写了代码!
    • 我在上面重新发布了我的新代码我相信我在正确的轨道上但是我在 Eclipse 中收到消息说以下内容:File2FileCompare.main(File2FileCompare. java:16) 但是我在第 16 行没有看到任何错误
    • 1 秒检查我认为我可能知道问题所在的内容
    • 我得到了它的工作,这是我的错,路径没有写,这就是我看电脑屏幕几个小时的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    相关资源
    最近更新 更多