Hallo,
ich wollte eine Fortschrittsanzeige für FTP Upload in mein Programm integrieren.
Habe schon viel gelesen :rtfm: und ein Beispiel gefunden, das ich abgeändert habe.
Vorher hatte ich immer mit
client.storeFile ( newItem.getName(),fis) ;
geschrieben und es klappte alles
nun verwende ich
fos = client.storeFileStream(newItem.getName());
und die Datei ist nach dem Transfer manchmal größer manchmal kleiner
mache ich was falsch? :autsch:
wenn ich die Zeile
if (fos != null) {fos.close();}
einkommentiere dann kommt eine ParserInitializationException
ohne läuft es aber die Größe stimmt nicht :bahnhof:
ich wollte eine Fortschrittsanzeige für FTP Upload in mein Programm integrieren.
Habe schon viel gelesen :rtfm: und ein Beispiel gefunden, das ich abgeändert habe.
Vorher hatte ich immer mit
client.storeFile ( newItem.getName(),fis) ;
geschrieben und es klappte alles
nun verwende ich
fos = client.storeFileStream(newItem.getName());
und die Datei ist nach dem Transfer manchmal größer manchmal kleiner
mache ich was falsch? :autsch:
Java:
public void copyFileStream ( FTPClient client , File item, FTPFile newItem) {
FileInputStream fis= null;
OutputStream fos = null;
try {
client.setFileType(FTP.BINARY_FILE_TYPE);
fis = new FileInputStream(item.getAbsoluteFile());
fos = client.storeFileStream(newItem.getName());
int counter = 0;
byte[] buffer = new byte[1024];
while(true) {
int bytes = fis.read(buffer);
if(bytes < 0) break;
fos.write(buffer, 0, bytes);
counter += bytes;
// hier geht es zur Ausgabe
printFtpStatusBar ( item.getName(), counter, item.length());
}
// if (fos != null) {fos.close();}
if (fis != null) {fis.close();}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
FTPFile[] ftpfilesize;
try {
ftpfilesize = client.listFiles(newItem.getName());
if (ftpfilesize[0].getSize() != item.length() ) {
throw new TransferException ( " ... ");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
wenn ich die Zeile
if (fos != null) {fos.close();}
einkommentiere dann kommt eine ParserInitializationException
ohne läuft es aber die Größe stimmt nicht :bahnhof: