# Datei außerhalb der Webanwendung schreiben.



## nebulo (13. Dez 2006)

Hallo, 

ist es irgendwie möglich Dateien außerhalb der Webanwendung, praktisch an beliebigen Ort auf der lokalen Maschine auf der der Tomcat läuft zu schreiben? Wenn ja wie?


Gruß nebulo


----------



## SlaterB (13. Dez 2006)

so wie immer?
Stream mit Pfad öffnen,

oder welche Problem stellen sich dir in den Weg?


----------



## nebulo (13. Dez 2006)

Es scheint nicht zu funktionieren. Tomcat spuckt auch keine Fehlermeldung aus, aber ich kann die Datei nirgendwo finden. Wenn ich die Bean mit einer Testklasse instanziere dann wird die Datei aber geschrieben. Deswegen war meine Vermutung der Tomcat erlaubt es nicht außerhalb der Webapplication zu schreiben.


----------



## SlaterB (13. Dez 2006)

vielleicht verwendest du einen relativen Pfad der woanders landet als du vermutest?

gib den Pfad aus mit file.getAbsolutePath(),

verwende c:\ auf Windows,

--------

speichere die Datei im Programm und greife später mit new File(pfad) wieder darauf zu,
existiert sie dann (im Programm)?


----------



## nebulo (13. Dez 2006)

Ich hab es schon mit relativen und absoluten Pfaden versucht. Und das ganze Dateisystem nach der Datei durchsucht. Ich verwende Linux. 
Es kann wohl nicht daran liegen, dass ich keinen OutputStream verwende sondern einen FileWriter? Soweit ich weiß benutzt diese internt sowieso einen OutputStream.

Die Methode:


```
private static void writeFile(String text, String filename){
		try{
			FileWriter fw = new FileWriter(filename, true);
			fw.write(getDate() + ": " + text + "\n");
			fw.flush();
			fw.close();
		}catch(IOException i){
			i.printStackTrace();
		}
}
```

Aus einer Testklasse aufgerufen funktioniert es einwandfrei. An den Rechten kann es auch nicht liegen habe momentan den absoulten Pfad zu einem Ordner in dem jeder schreiben darf drin.


----------



## nebulo (13. Dez 2006)

Ich hab es schon mit relativen und absoluten Pfaden versucht. Und das ganze Dateisystem nach der Datei durchsucht. Ich verwende Linux. 
Es kann wohl nicht daran liegen, dass ich keinen OutputStream verwende sondern einen FileWriter? Soweit ich weiß benutzt diese internt sowieso einen OutputStream.

Die Methode:


```
private static void writeFile(String text, String filename){
		try{
			FileWriter fw = new FileWriter(filename, true);
			fw.write(getDate() + ": " + text + "\n");
			fw.flush();
			fw.close();
		}catch(IOException i){
			i.printStackTrace();
		}
}
```

Aus einer Testklasse aufgerufen funktioniert es einwandfrei. An den Rechten kann es auch nicht liegen habe momentan den absoulten Pfad zu einem Ordner in dem jeder schreiben darf drin.


----------



## SlaterB (13. Dez 2006)

so mit Parametern und eigener Operation klingt das schon unnötig aufwendig zum testen..,

ich hoffe du rufst
writeFile("hello world", "/pfad/"); 
und nicht 
writeFile("/pfad/","hello world" );
auf  

wie gesagt noch ein Test im Programm:
nach dem Schreiben 
File f = new File(filename);
System.out.println("exists?: "+f.exists()+", path: "+f.getAbsolutePath());

vielleicht auch f.canWrite() oder ähnliches prüfen,

---------

aber das nur allgemein, zu Linux kann ich nichts testen und auch nichts weiter beitragen


----------



## nebulo (13. Dez 2006)

Vielen Dank! In der Tat war es doch ein Problem den Schreibrechten unter Linux! Aber noch eine kleine Frage wenn ich bei einer Webapplication unter Tomcat eine Datei relativ angebe wo landet diese?


----------



## SlaterB (13. Dez 2006)

grummel grummel grummel grummel grummel 

denken:
new File(".").getAbsolutePath();


----------



## nebulo (13. Dez 2006)

Viele Danke! Hätte ich auch selber drauf kommen könne. 

Gruß nebulo


----------

