5

我正在开发一个小程序,它可以将文件上传到我的 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 中没有流...我该如何处理?

谢谢你的帮助!:)

问候

4

1 回答 1

32

您可以使用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);

希望这可以帮助

于 2013-03-09T11:08:52.180 回答