# Datei leeren?



## Andii (13. Feb 2004)

Wie kann man ohne "File" zu verwenden den Inhalte einer Datei leeren? 
Also in einem File steht iregendwas. Nach einer Methode sollte im File nichts mehr stehen. 
Aber die Datei darf/kann nicht gelöscht werden und eine neue erstellt werden! 

Das muss doch irgendwie möglich sein, oder? z.B. mit OutputStreamWriter?


----------



## Roar (14. Feb 2004)

```
try {
FileWriter fw = new FileWriter("datei.txt"); // ich weiß nich genau was FileWriter als parameter bekommt. evtl. auch einen stream oder so...
fw.write();
fw.close()
} catch ( IOException ioex ) { System.out.println("oooh:("); }
```


----------



## Andii (14. Feb 2004)

Danke für den Tipp   

Also das File leeren geht nun. 
Aber wenn ich nun etwas reinschreiben möchte geht das nicht. Der FileWriter schreibt leider nur Bytes in das File. Ich muss aber lesbare Strings (ASCII) in die Datei schreiben.
Der Grund warum ich das kompliziert mache ist, dass alle Dateien in einem (zuvor ausgeführen) JAR-File zusammen mit der Applikation steckten. :? 

Naja, wie gesagt, die Datei kann ich so leeren, aber auffuellen mit OutputStreamWriter klappt leider nicht so. 
Wäre echt Klasse, wenn jemand den Fehler ausfindig machen könnte! 

Hier ein Test-Code:

```
try
		{

			Class res = getClass();
			URL url = res.getResource("ordner/test.txt");
			
			//Datei leeren
			FileWriter fw = new FileWriter(url.getFile());
			fw.close(); 
			
			//Datei neu fuellen:
			URLConnection con = url.openConnection();
			OutputStream out = con.getOutputStream();
			OutputStreamWriter osw = new OutputStreamWriter(out);
			
			osw.write("Hallo");
			osw.write(13);		//Neue Linie: Linefeed 
			osw.write(10);
			osw.write("Hallo2");	
			
			osw.close();
			out.close(); 
			
		}
		catch (Exception e) {  System.out.println(e.toString()); }
```

Vielen Dank für die Hilfe!


----------



## bygones (15. Feb 2004)

nimm keinen FileWriter, sondern pack denn z.b. in einen PrintWriter....


```
PrintWriter writer = new PrintWriter(new FileWriter(url.getFile()));
writer.write("Hallo"); 
writer.write(13);
writer.write(10); 
writer.write("Hallo2");
writer.flush();
writer.close();
```


----------



## Anddi (15. Feb 2004)

Sehr gut! Klappt einwandfrei. 
Vielen Dank für den Tipp


----------



## Nobody (15. Feb 2004)

du kannst schon einen filewriter nehmen, solltest ihn aber in einen BufferedWriter packen, dass die packet zahl auch passt (zb ein segment hat 4kb, dann schreibt er das ganze immer 4kb weise)


----------

