Witam mam problem z moim kodem. Staram się pobrać do jednej zmiennej linię z pierwszego pliku, do drugiej zmiennej linię z drugiego pliku i je porównać, za pomocą metody equals
. Jeżeli są takie same, zapisuję ją w trzecim pliku, jeżeli nie sprawdzam dalej. Przeszukiwanie ma odbywać się na zasadzie każdy z każdym, tj. program ma pobrać jedną linię z pierwszego pliku, sprawdzić czy pasuje do którejkolwiek z drugiego i tak dalej.
Problem polega na tym, że mój program tworzy plik, lecz nic nie zapisuje. Nawet osobnego bw.write("End")
. Próbowałem także użyć bw.flush()
mimo, że nie bardzo go rozumiem (przeszukałem forum, lecz nic nie znalazłem, może nie umiem szukać).
Mój kod poniżej.
package one;
import java.io.*;
public class Compare {
public static void main(String[] args) {
FileReader f1 = null;
FileReader f2 = null;
PrintWriter pw = null;
try{
f1 = new FileReader("I:\\Praktyka\\jeden.txt");
f2 = new FileReader("I:\\Praktyka\\dwa.txt");
pw = new PrintWriter("I:\\Praktyka\\out.txt");
BufferedReader bf1 = new BufferedReader(f1);
BufferedReader bf2 = new BufferedReader(f2);
BufferedWriter bw = new BufferedWriter(pw);
String str2;
String str1;
while ((str1 = bf1.readLine()) != null){
while ((str2 = bf2.readLine()) != null){
if (str1.equals(str2)){
bw.write(str1);
// bw.flush(); ?
}
}
}
bw.write("End");
} catch (FileNotFoundException e){
System.out.println("Couldn't open file " + e);
} catch (IOException e) {
System.out.println("Caught IO Exception");
} finally {
try {
f1.close();
f2.close();
pw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Za duplikaty przepraszam, jeżeli takowe są, lecz jedyne co znalazłem to : Porównanie stringów z dwóch plików tekstowych oraz Porównanie dwóch plików tekstowych, zwrot różnicy.
EDIT
Dodałem blok finally
, a FileReader
y i PrintWriter
a zadeklarowałem przed blokiem try ... catch
.