Ich versuche, 2 Dateien Zeile für Zeile zu vergleichen. Nachdem dieser Vergleich durchgeführt wurde, werden alle Zeilen in eine dritte Datei kopiert und sie werden als "in beiden Dateien vorhanden" identifiziert; "ohne DateiA"; oder "ausschließlich von Datei B". Dank der Hilfe von @nono und @Andreas läuft mein Code, aber noch wird nichts in die Ausgabedatei geschrieben.Vergleichen von Zeilen in 2 Dateien in Java
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{
}
}
Anruf 'hasNextLine()' 'vor dem Aufruf von nextline()'. 'nextLine()' gibt bei EOF nicht null zurück wie 'BufferedReader.readLine()'. Da Sie nur Zeilen lesen, wechseln Sie zu 'BufferedReader', weil es * viel * besser als' Scanner' ist. – Andreas
... und tue ** nicht ** Vergleiche String Objekte mit '==', benutze stattdessen 'equals()' Methode –
Vielen Dank für deine Antwort. Ich tat, wie Sie sagten, ich habe bufferedReader stattdessen verwendet, aber es sagt, dass erwartet, ein Reader-Objekt anstelle von Datei (der Konstruktor bufferedReader (Datei) ist nicht definiert) –