FTP apache在java中提交进度条

时间:2013-03-09 10:17:57

标签: java ftp progress-bar apache-commons-net

我正在开发一个小程序,它可以将文件上传到我的FTP服务器并用它做一些其他的事情。 现在......一切正常,我正在使用org.apache.commons.net.ftp FTPClient类进行上传。

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中没有流......我该如何处理?

感谢您的帮助! :)

问候

1 个答案:

答案 0 :(得分:25)

您可以使用CopyStreamListener来执行此操作,根据Apache commons docs 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);

希望这有帮助