Java 我正在尝试一个简单的比较2个文本文件,并打印2个文本文件之间的差异

Java 我正在尝试一个简单的比较2个文本文件,并打印2个文本文件之间的差异,java,Java,下面是上述代码中提到的路径中存在的两个文本文件的内容 import java.io.*; public class CheckingTwoFilesAndComparing implements Serializable { private static final long serialVersionUID = 1L; static String FILE_ONE = "/Users/abextra/myText1.txt"; static String FILE_TWO = "/Use

下面是上述代码中提到的路径中存在的两个文本文件的内容

import java.io.*;

public class CheckingTwoFilesAndComparing implements Serializable {

private static final long serialVersionUID = 1L;

static String FILE_ONE = "/Users/abextra/myText1.txt";
static String FILE_TWO = "/Users/abextra/myText2.txt";

public static void main(String[] args) {

    try {
        CompareFile(FILE_ONE, FILE_TWO);

    } catch (Exception e) {
        e.printStackTrace();
    }
}


private static void CompareFile(String fILE_ONE2, String fILE_TWO2)
        throws Exception {

    File f1 = new File("FILE_ONE");
    File f2 = new File("FILE_TWO");

    FileReader fR1 = new FileReader(f1);
    FileReader fR2 = new FileReader(f2);

    BufferedReader reader1 = new BufferedReader(fR1);
    BufferedReader reader2 = new BufferedReader(fR2);

    String line1 = null;
    String line2 = null;

    while (((line1 = reader1.readLine()) != null)
            &&((line2 = reader2.readLine()) != null)) {
        if (!line1.equalsIgnoreCase(line2)) {
            System.out.println("The files are DIFFERENT");
        } else {
            System.out.println("The files are identical");
        }

    }
    reader1.close();
    reader2.close();

   }
}
我是java的新手。我使用了eclipse调试器,我发现我一直遇到“FileNot found”异常-有人能帮忙吗? 多谢

==myText1.txt===
1,This is first line, file
2,This is second line, file
3,This is third line , file
4,This is fourth line, file

==myText2.txt===
1,This is first line, file
2,This is second line, file
3,This is third  line, file
4,This is fourth line, file
5,This is fifth line, file
尝试删除此处的引号。您在程序的前面声明了FILE_ONE和FILE_TWO作为变量,但没有调用它们。相反,您直接调用了一个字符串“FILE_ONE”,当然找不到它。所以用传递给CompareFile的参数替换它

File f1 = new File("FILE_ONE");
File f2 = new File("FILE_TWO");

并告诉我们这是否解决了问题。

您必须从以下内容中删除引号:

File f1 = new File(fILE_ONE2);
File f2 = new File(fILE_TWO2);

另外,请确保在文件路径
“/Users/abextra/myText1.txt”
“Users”应该是大写的。
在许多系统上,
/users/
是小写的。

文件打开时也可以抛出
FileNotFoundException
。 (仅当您尝试写入已打开的文件时才会发生此情况)


尝试关闭文件,然后运行程序

@Roflo只是一个注释,但我不认为小写用户位对于Windows7是必要的。不过,一般来说,检查目录绝对是一个不错的做法。没错,但确定一下也无妨。:)我不知道Mac和Windows的情况。我也不知道Mac的情况。我仔细检查了Windows7,因为那听起来不太对劲。很高兴知道,我想我们在这里都学到了一些东西。:)实际上,看起来他想要使用传递到方法中的参数字符串fILE\u ONE2,字符串fILE\u TWO2。另外,您的compareFile方法接受2个参数fILE\u ONE2和fILE\u TWO2,而您从未使用它们。您创建了一个文件对象,然后用它来创建一个FileReader对象,查看javadocs for io,您不需要所有这些。@Joel很好。我认为他可能仍然可以接受另一种方式,因为在这个实现中,它们根本没有改变它们的静态声明,但是它应该完全遵循参数,因为他特意创建了它们。我会编辑的。你说的“打印2之间的差异”是什么意思?只是测试2文件是相同的,或者需要“指出”不同的行?感谢所有的帮助-我确实打开了文件并删除了引号文件f1=新文件(“文件_ONE”);并使用正确的参数将值传递给调用函数。
File f1 = new File("FILE_ONE");
File f2 = new File("FILE_TWO");