# Wachsende Datei per FTP lesen



## peez (12. Aug 2011)

Ich habe recht große Dateien, die auf einen FTP-Server transferiert werden (ca. 50GB).

Von denen möchte ich gerne möglichst gleich eine MD5 Summe generieren u. will deshalb noch während die Datei auf den FTP geschrieben wird, eine weitere Verbindung aufbauen und darüber die Datei schon zum Lesen öffnen um die Prüfsumme zu generieren.
Lokal funktioniert das wunderbar. Hier kann ich einfach den FileInputStream öffnen und lesen.
Ob die Datei fertig ist erkenne ich dann wenn 
	
	
	
	





```
InputStream.available()
```
 über eine bestimmte Zeit 0 bleibt.

Für FTP benutze ich Apache Commons FTP - wenn ich hier die Datei versuche einzulesen (
	
	
	
	





```
client.retrieveInputStream("filename")
```
) während sie noch geschrieben wird bekomme ich zwar den Stream, allerdings gibt .available() 0 zurück. Ebenso bekomme ich -1 bei einer read-Operation.

Jetzt bin ich nicht ganz sicher ob es am Server liegen kann oder an der Library oder an meinem Weg das zu tun...
Hat sowas evt. schonmal wer gemacht? Könnte es Sinn machen, nicht .retrieveInputStream() zu verwenden, sondern die rohen FTP-Kommandos selbst abzusetzen?


----------



## FArt (17. Aug 2011)

Schon mal genau durchgelesen: InputStream (Java Platform SE 6) ?

Dummerweise kannst du nicht sicher feststellen, ob die Übertragung bereits beendet ist. Du kannst lediglich über zeitliche Zusammenhänge eine Annahme ableiten, also z.B. kannst du davon ausgehen, dass eine Datei, deren Größe sich für mehrere Sekunden nicht ändert, die Übertragung evtl. abgschlossen ist.


----------



## peez (17. Aug 2011)

Ja das weiß ich ja schon (Lies mal meinen Post genau  )
Habe das Problem mittlerweile nicht gelöst aber den Grund rausbekommen. Das scheint tatsächlich eine Einstellung im FTP-Server zu sein, die erlaubt von Files zu lesen die gerade geschrieben werden. Deshalb habe ich immer -1 bei read bzw. 0 bei available() zurückbekommen.
Jetzt mit aktivierter Option funktioniert es genau wie ich vermutet hatte. Leider in maximal 8kB Blöcken (vermutlich FTP Spec. oder noch ne weitere Server-Einstellung).

Hatte gehofft, dass man das mit Lesen während Schreiben Client-Seitig steuern kann.


----------

