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
über eine bestimmte Zeit 0 bleibt.
Für FTP benutze ich Apache Commons FTP - wenn ich hier die Datei versuche einzulesen (
) 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?
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
Code:
InputStream.available()
Für FTP benutze ich Apache Commons FTP - wenn ich hier die Datei versuche einzulesen (
Code:
client.retrieveInputStream("filename")
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?