Zeilenweise löschen

TheGreenDragon

Erfahrenes Mitglied
Hallo,

kann mir jemand verraten wie ich es am geschicktesten hinbekomme, die ersten 6 Zeilen und die letzte Zeile einer Datei zu löschen?

Gruss
 
Hast du dir denn schon Gedanken gemacht, wie man an die Zeilen einer Datei rankommt und wie man Zeilen loeschen kann?
 
Schon aber ich komm zu nichts.

Mein erster Gedanke war eine neue Datei zu schreiben und die ersten 6 Zeilen einfach beim readLine(), nicht zu beachten. Aber wann weiss ich wann die letzte Zeile da ist damit ich sie weg lassen kann? o_O

Zudem tat sich dann noch ein zweites Problem auf. Die Methode write() beachtet keine Zeilenumbrüche.

Code:
        FileWriter fw = new FileWriter(f2);

        
        for ( String line; (line = eingabe.readLine()) != null; ) 
            fw.write(line);
Es wird alles in eine Zeile geschrieben obwohl die Ausgangsdatei immer sowas stehen hat

Code:
asdlkfjlsdakfjlaskdjf


asldfjlaskdfjlsdjf


alsdfjäsdlafjk
 
Zuletzt bearbeitet:
Die Datei zeilenweise einlesen und neu schreiben, aber vor jedem Schreiben überprüfen ob es eine der ersten sechs Zeilen od. die letzte Zeile ist?
 
@zeja

Jap das hab ich nun auch gemacht, dennoch musste ich feststellen, dass bei meinem Programm Zeichen, ja sogar ganze Zeilen verloren gehen. Die Eingangsdatei hat noch eine Größe von 751 KB aber die Ausgangsdatei nur noch 736 KB, dabei hab ich die ersten sechs noch nicht einmal weggelassen.

Wäre sehr dankbar wenn jemand den Fehler sieht:

Code:
File f = new File("H:/kotlett.tif");
		FileReader eingabeStrom = new FileReader(f);
		BufferedReader eingabe = new BufferedReader(eingabeStrom);
		
		File f2 = new File ("H:/schnitzel.tif");
		FileWriter fw = new FileWriter(f2);
		BufferedWriter bw = new BufferedWriter(fw);
		
		ArrayList<String> al = new ArrayList<String>();
		
		for ( String line; (line = eingabe.readLine()) != null; )
		{
			al.add(line);
			System.out.println(line);
		}
		
		for ( int i = 0; i < al.size(); i++)
		{
			bw.write(al.get(i) + "\n");
		}
:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(:confused::(
 
Womit hast du denn die Ausgangsdatei erstellt?
Soweit ich weiß machen die Standart-Windows-Editoren beim zeilenumbruch immer ein "\r\n" statt einem einfachen "\n" wie bei Linux.
 
@hammet

Leider bringt "\r\n" auch kein Erfolg. Seltsam ist zudem auch die Tatsache, dass bei
Code:
System.out.println(line)
alle Zeilen ausgespuckt werden... :confused:
 
Führst du nach der zweiten For-Schleife ein "bw.flush()" aus? Das ist notwendig, damit alle Daten rausgeschickt werden. Zudem hoffe ich auch, dass du sämtliche Reader etc. closed nachdem du sie nicht emrh verwendest.
 
Zurück