Hallo, ich möchte nach einmaligem Auslesen der erste Zeile einer Datei, das Auslesen wieder am Anfang der Datei fortsetzen. Ich habe deshalb mal ein bißchen mit mark(), reset() und marksupported() experimentiert, werde aber nicht so richtig schlau aus der Funktionsweise. Hier erstmal ein Stück Code:
So ganze klappt wenn in der Datei, sagen wir mal test.txt mehr als eine Zeile vorhanden ist. Dann wird alles Ordnungsgemäßt übertragen, wenn jedoch nur eine Zeile da ist, dann gibt es eine Exception. Ich nehme mal an das hat irgendwas mit diesem mark(1) und reset() zu tun?
Weiß da jemand einen Rat für mich bzw kennt eine grundsätzlich bessere Methode nach einem readLine() zum Dateianfang zurückzukehren?
Danke im Voraus
Code:
BufferedReader b_in = new BufferedReader ( new FileReader(path) );
if (b_in.markSupported())
{
b_in.mark(1); // Markieren des Dateianfangs
if (!b_in.readLine().contains("$Date")) // Überprüfen ob erste Zeile $Date enthält
{
b_in.reset(); // Zurücksetzen zum Dateianfang
BufferedWriter b_out = new BufferedWriter ( new FileWriter(path+".tmp") );
int i = 0;
while( (i = b_in.read()) != -1 ) b_out.write(i); // Kopieren des Inhalts von Datei b_in nach b_out
b_in.close();
b_out.close();
}
}
So ganze klappt wenn in der Datei, sagen wir mal test.txt mehr als eine Zeile vorhanden ist. Dann wird alles Ordnungsgemäßt übertragen, wenn jedoch nur eine Zeile da ist, dann gibt es eine Exception. Ich nehme mal an das hat irgendwas mit diesem mark(1) und reset() zu tun?
Weiß da jemand einen Rat für mich bzw kennt eine grundsätzlich bessere Methode nach einem readLine() zum Dateianfang zurückzukehren?
Danke im Voraus