2017-07-05 112 views
0

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

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

问题现在我正在打印出来的文件名是从相同的区域,是不一样的我试过.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)); 
         } 



        } 
       } 
      } 
     } 
    } 
} 
+0

首先,我建议你把这个代码变成一种方法。然后找出一个算法来解决你的问题。要做到这一点,关掉你的电脑,拿到一张纸和一支铅笔。用文字**写出解决问题所需的步骤。不要太担心Java语法。 –

+0

[使用Java查找文件夹中的文件]的可能重复(https://stackoverflow.com/questions/4852531/find-files-in-a-folder-using-java) –

+0

可能出现[打印出文件名称是不同的](https://stackoverflow.com/questions/44932665/printing-out-file-names-that-are-different) –

回答

1

此代码将在文件夹中的所有文件遍历和文件夹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 
      } 
     } 
    } 
} 

积分大卫罗伯斯:https://stackoverflow.com/a/1844695/4788664

+0

我相信这会工作。我知道我必须添加我的代码来比较我的逻辑,但是在此语句中if(file.isFile())),eclipse在单词** file **下面放置一条红线。这应该是wordA这个词吗? – Jonathan

+0

yes确实我的不好。我在代码片段中编写了代码! – TinkeringMatt

+0

我转发了我上面的新代码我相信我是在正确的轨道上,但是我在eclipse中得到消息说以下内容:线程“主”java.lang.NullPointerException中的异常 \t at File2FileCompare.main(File2FileCompare.java:16)我没有看到第16行的任何错误 – Jonathan

1

文件尝试改变:

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

为:

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