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