在Java中比较两个文件中的行

在Java中比较两个文件中的行,java,file,io,Java,File,Io,我试着逐行比较两个文件。进行比较后,所有行都复制到第三个文件中,并标识为“在两个文件中都存在”;“不包括文件A”;或“不包括文件B”。感谢@nono和@Andreas的帮助,我的代码正在运行,但输出文件上还没有写任何东西 publicstaticvoidcompareFileLines(stringfileloca、stringfilelocb、stringfilelocc)抛出IOException{ //fileLoc'X'是文件路径 试一试{ BufferedReader Reader

我试着逐行比较两个文件。进行比较后,所有行都复制到第三个文件中,并标识为“在两个文件中都存在”;“不包括文件A”;或“不包括文件B”。感谢@nono和@Andreas的帮助,我的代码正在运行,但输出文件上还没有写任何东西


publicstaticvoidcompareFileLines(stringfileloca、stringfilelocb、stringfilelocc)抛出IOException{
//fileLoc'X'是文件路径
试一试{
BufferedReader Reader 1=新的BufferedReader(新文件读取器(fileLocA));
BufferedReader reader2=新的BufferedReader(新文件读取器(fileLocB));
PrintWriter writer=新的PrintWriter(新文件(fileLocC));
String[]linesA=新字符串[FileLength(fileLocA)];//FileLength检查文件上的行数
String[]linesB=新字符串[fileLenght(fileLocB)];
对于(int i=0;i对于(int n=0;n,BufferedReader构造函数可以接受FilReader。
FileReader可以接受文件或路径

FileReader fr=新的FileReader(“text.txt”)

BufferedReader br=新的BufferedReader(fr)

要循环使用: 字符串s; 而((s=br.readLine())!=null){ ...
}

在调用
nextLine()
之前,调用
hasNextLine()
不会在EOF处像
BufferedReader.readLine()一样返回null
可以。由于您只进行行读取,请切换到
BufferedReader
,因为它的性能比
Scanner
…好得多,并且不将字符串对象与
=
进行比较,请使用
equals()
method instead非常感谢你们的回复。我按照你们说的做了,我使用了bufferedReader,但它说需要一个Reader对象而不是文件(构造函数bufferedReader(文件)未定义)
       public static void compareFileLines(String fileLocA, String fileLocB, String fileLocC) throws IOException{
        //fileLoc'X' is the filepath 
        try{
        BufferedReader reader1 = new BufferedReader( new FileReader(fileLocA));
        BufferedReader reader2 = new BufferedReader( new FileReader(fileLocB));
        PrintWriter writer = new PrintWriter(new File(fileLocC));

        String []linesA = new String [fileLenght(fileLocA)];  //filelenght checks number of lines on a file
        String []linesB = new String [fileLenght(fileLocB)];

        for (int i=0; i< linesA.length-1; i++){
        linesA[i]=  reader1.readLine();
        }
        for (int i=0; i< linesB.length-1; i++){
             linesB[i]=  reader2.readLine();
        }
        boolean finder = false;         
        for (int n =0; n<linesA.length-1; n++){
            for(int m=0; m<linesB.length-1; m++){
                if (linesA[n].equals(linesB[m])){
                    finder = true;
                    writer.append(linesA[n]+" Is in both files \n");
                }
                if (finder == false){
                    writer.append(linesA[n]+ "Is exclusive of File1");                      
            }
                finder = false;
        }
        }
        finder = false;
        for (int n=0; n< linesB.length -1; n++){
            for (int m=0; m< linesA.length -1; m++){
                if (linesB[n].equals(linesA[m])){
                    finder = true;
                }

            }
            if (finder == false){
                writer.append(linesB[n] +" is exclusive of File2");
            }
            finder = false;
        }


    }finally{           

    }       

}