FTP storeFileStream Problem

cbl

Mitglied
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:

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:
 
Oder hat jemand einen Tip wie ich einen FTP Upload vom Binärdaten mit Fortschrittsanzeige sonst noch realisieren könnte? ???:L
 
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:

Habe festgestellt, wenn ich in Zeile 31 "als vor der Überprüfung" einen Sleep einbaue, dann stimmt die Filegrösse .. aber es fliegt im Praxisbetrieb die ParserInitializationException bei machen Ftp-Verbindungen :noe:

ich galube ich gebe meinen Versuch auf ... hoffe IMMER noch das jemand ein funktionierendes Beispiel kennt, das funzt.
 

Neue Themen


Zurück
Oben