# Apache Commons File Object bekommen



## 0plan (29. Jun 2012)

Moin, ich möchte gerne von meinem FTPServer mit der Apache Commons Lib (FTPClient) eine Datei herunterladen bzw in meinem Programm verarbeiten.

Die Lib bietet einem ja die Möglichkeit via ftpclient.retrieve(remote, fos) eine Datei zu downloaden. Ich benötige allerdings ein normales File - Object, da ich dieses als RootNode für meinen JTree benötige. 

Kennt einer eine Möglichkeit wie man mit der Apache Lib soetwas realisiert? Ich möchte ungern alle Dateien laden, und dann aus den lokal gespeicherten Dateien File-Objekte erzeugen, um Sie dann wieder zu verarbeiten und wieder hochzuladen..


----------



## nillehammer (29. Jun 2012)

> Kennt einer eine Möglichkeit wie man mit der Apache Lib soetwas realisiert? Ich möchte ungern alle Dateien laden, und dann aus den lokal gespeicherten Dateien File-Objekte erzeugen, um Sie dann wieder zu verarbeiten und wieder hochzuladen..


Das geht nicht. 
	
	
	
	





```
File
```
 ist die repräsentation einer Datei auf einem lokal gemounteten Filesystem. Dateien auf FTP-Servern sind nicht Bestandteil des lokal gemounteten Dateisystems. Deswegen kann man daraus keine File-Objekte machen.


----------



## 0plan (29. Jun 2012)

Hab jetzt zwar einen Weg gefunden die Dateien in meinen Tree zu bekommen, aber ich möchte auch die Ordner bekommen bzw. directories. Bei FileZilla z.B. werden ja auch die Ordnerstrukturen des FTP-Servers dargestellt. Ich frage mich wie sowas realisiert wurde.


----------



## nillehammer (29. Jun 2012)

Ich weiß jetzt nicht, welche Methode das bei der Apache-Library ist, aber im FTP-Protokoll gibt es dafür das LIST-Kommando. Das werden FileZilla und andere FTP-Clients sicher irgendwie absetzen.


----------



## c_sidi90 (29. Jun 2012)

Ob es da einen direkteren Weg gibt kann ich dir nicht sagen, ich würde es so probieren:

Du listest dir alle Verzeichnisse deines Servers auf. Diese Funktion bietet dir die Library ja mit listFiles (Rückgabe FTPFile).
Nun liest du dir in einer Schleife jeweils den Namen aller Verzeichnisse auf und erstellst temporär auf deinem lokalen Rechner temporärer Verzeichnisse. 

Das selbe machst du auch mit den Dateien welche sich auf deinem Server in den jeweiligen Verzeichnissen befinden.

So kannst du dir also ein genaues Abbild deiner FTP-Struktur auf deinem Rechner erstellen und mit diesen weiterarbeiten. Lokale Dateien und Verzeichnisse bekommst du auch ohne weiteres in einen JTree.

Nach deiner Datenverarbeitung lädst du diese Temporären Dateien einfach wieder hoch (überschreibst alles) und fertig.  Es würde sich auch anbieten, wenn du dir für diese tempfiles eine eigene Klasse erstellst, und mit boolischen Variablen festhälst welche bearbeitet wurden und welche nicht. So brauchst du nicht alle Dateien überschreiben, sondern nur die wo der Wert edited = true ist und sparst dir Zeit.


----------

