Java 比较2个目录中的文件

Java 比较2个目录中的文件,java,Java,我有一段代码,告诉我这两个文件的内容是否相同。但是,我想将其扩展到目录文件,而不仅仅是一个文件。换句话说,将一个文件夹中的文件与另一个文件夹中的文件进行比较,看看它们的内容是否相同或不同,如果相同或不同,则将其打印出来 这样做只是修改目录路径的问题吗?我的代码如下。我记得我在某个地方读过书,可能需要导入另一个库。任何帮助都将不胜感激 我现在遇到的问题是打印出与我尝试的区域相同和不相同的文件名。getName无效我的结果返回(true)(而不是符合条件的文件名) 代码如下 import java.

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

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

我现在遇到的问题是打印出与我尝试的区域相同和不相同的文件名。getName无效我的结果返回(true)(而不是符合条件的文件名)

代码如下

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



                    }
                } 
            }
        }
    }
}
尝试更改:

if(line1 == null || line2 == null)
用于:

尝试更改:

if(line1 == null || line2 == null)
用于:


此代码将迭代文件夹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:

此代码将迭代文件夹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的功劳:

首先,我建议您将此代码放入一个方法中。然后找出一个算法来解决您的问题。为此,请关闭计算机并获得一张纸和一支铅笔。用文字写出解决问题所需的步骤。不要过度担心Java语法。可能重复的Fir可能重复我建议你把这些代码放到一个方法中。然后找出一个算法来解决你的问题。要做到这一点,关掉你的电脑,拿一张纸和一支铅笔。用文字写下解决问题所需的步骤。不要过分担心Java语法。可能重复的可能重复我相信这会奏效。我知道我有e添加我的代码来比较我的逻辑,但是eclipse在这条语句中的单词file下加了一条红线(if(file.isFile())。这应该是单词fileA吗?是的,我的错。我在代码段中写了代码!我在上面重新发布了我的新代码,我相信我的思路是正确的,但是我在eclipse中得到的消息是:线程中的异常File2FileCompare.main处的“main”java.lang.NullPointerException(File2FileCompare.java:16)但是我在161行没有看到任何错误检查一些东西我想我可能知道问题是什么我让它工作了这是我的错路径没有写这是我在电脑屏幕上看了几个小时后得到的结果。我相信这会工作的。我知道我必须添加代码来比较我的逻辑,但是eclipse在这个单词文件下面放了一条红线s语句(if(file.isFile())。这应该是fileA这个词吗?是的,这是我的错。我在代码段中编写了代码!我在上面重新发布了我的新代码,我相信我在正确的轨道上,但是我在eclipse中收到消息说:线程“main”中的异常java.lang.NullPointerException在File2FileCompare.main(File2FileCompare.java:16)然而,我在161秒的线路上没有看到任何错误检查某些东西我想我可能知道问题是什么我让它工作了是我的错路径没有写入这是我在电脑屏幕上看了几个小时后得到的结果。