比较Java中的两个文件

比较Java中的两个文件,java,Java,我是Java新手,我编写了代码来比较Java中的两个数据文件,但这只适用于一行,而不是所有行或整个文件。下面是我的代码 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class CompareTextFiles { public static void main(String[] args) throws IOException {

我是Java新手,我编写了代码来比较Java中的两个数据文件,但这只适用于一行,而不是所有行或整个文件。下面是我的代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CompareTextFiles {

    public static void main(String[] args) throws IOException {
        BufferedReader reader1 = new BufferedReader(new FileReader("D:/Data/file1.docx"));
        BufferedReader reader2 = new BufferedReader(new FileReader("D:/Data/file2.docx"));
        String line1 = reader1.readLine();
        String line2 = reader2.readLine();
        boolean areEqual = true;
        int lineNum = 1;
        while (line1 != null || line2 != null) {
            if (line1 == null || line2 == null) {
                areEqual = false;
                break;
            } else if (!line1.equalsIgnoreCase(line2)) {
                areEqual = false;
                break;
            }
            line1 = reader1.readLine();
            line2 = reader2.readLine();
            lineNum++;
        }
        if (areEqual) {
            System.out.println("Two files have same content.");
        } else {
            System.out.println("Two files have different content. They differ at line " + lineNum);
            System.out.println("File1 has " + line1 + " and File2 has " + line2 + " at line " + lineNum);
        }
        reader1.close();
        reader2.close();
    }
}

使用fileInputStream,然后在^2上使用两个嵌套for循环,我知道,就目前而言。
然后使用.hasNext调试应用程序并找出原因。您可能应该使用streams FileInputStream而不是readers BufferedReader。如果您确实需要比较二进制文件,直接用二进制文件比较文件会更快,也不太可能出现中断。您正在比较两个DOCX文件,只有第一行起作用。这是否意味着只有第一行相等,或者在第一行之后中断?添加错误以防其中断。另请注意:DOCX是xml文件,尽管编辑器中的内容可能相同,但文件中的属性值存在很多差异。因此,以您想要的方式进行比较很可能不管用——只是一个提示,通过哈希文件检查比较文件内容要好得多:@FedericoklezCulloca True,但文章中的代码也没有识别什么不同,它只是读取行并执行a==检查其是否相等。在本例中,我建议使用散列。但我理解你的意思,如果他想知道什么是真正不同的