2013-03-09 3 views
3

나는 내 FTP 서버에 파일을 업로드하고 다른 것들을 할 수있는 작은 프로그램을 만들고있다. 지금 ... 모두 작동합니다. 저는 org.apache.commons.net.ftp FTPClient 클래스를 사용하여 업로드하고 있습니다. 업로드한다FTP의 아파치 공유 진행률 표시 줄

ftp = new FTPClient(); 
ftp.connect(hostname); 
ftp.login(username, password); 

ftp.setFileType(FTP.BINARY_FILE_TYPE); 
ftp.changeWorkingDirectory("/shares/public"); 
int reply = ftp.getReplyCode(); 

if (FTPReply.isPositiveCompletion(reply)) { 
    addLog("Uploading..."); 
} else { 
    addLog("Failed connection to the server!"); 
} 

File f1 = new File(location); 
in = new FileInputStream(

ftp.storeFile(jTextField1.getText(), in); 

addLog("Done"); 

ftp.logout(); 
ftp.disconnect(); 

파일은 hTextField1에서 명명된다. ... 진행률 표시 줄을 어떻게 추가합니까? 내 말은, ftp.storeFile에 스트림이 없다는 것입니다. 어떻게 처리합니까?

도움 주셔서 감사합니다. :)

인사말

답변

21

당신은 정말 감사합니다, 그 작동, 즉 아파치 평민의 문서에 따르면이

+1

오 도움이 the listener to be used when performing store/retrieve operations.

CopyStreamAdapter streamListener = new CopyStreamAdapter() { @Override public void bytesTransferred(long totalBytesTransferred, int bytesTransferred, long streamSize) { //this method will be called everytime some bytes are transferred int percent = (int)(totalBytesTransferred*100/yourFile.length()); // update your progress bar with this percentage } }); ftp.setCopyStreamListener(streamListener); 

희망입니다, 그것은 CopyStreamListener를 사용 할 수있다! 하지만 이제 다른 문제가 생겼습니다 ... 파일을 업로드하는 버튼을 누르면 프로그램이 멈추고 업로드가 완료되면 전체 진행 막대가 가득 찼습니다 ... – cuzyoo

+1

GUI 스레드에서 업로드를 수행했기 때문입니다 따라서 GUI가 멈추고 업로드가 완료 될 때까지 기다리십시오. [Threads] (http://docs.oracle.com/javase/7/docs/api/java/lang/Thread)를 사용하는 것을 피할 수있는 방법입니다. html), 예제가 있습니다 : [Thread Example] (http://www.javabeginner.com/learn-java/java-threads-tutorial) – BackSlash

+0

도움을 주셔서 감사합니다! – cuzyoo