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 に答える