在FTPClient中上传进度

时间:2012-03-12 20:02:15

标签: java ftp-client apache-commons-net

我正在使用commons-net FTPClient来上传一些文件 如何获得上传进度(现在上传的字节数)?

由于

2 个答案:

答案 0 :(得分:5)

当然,只需使用CopyStreamListener即可。下面你会看到一个文件检索的例子(从commons-io wiki复制),所以你可以很容易地改变它。

    try {
            InputStream stO =
                new BufferedInputStream(
                    ftp.retrieveFileStream("foo.bar"),
                    ftp.getBufferSize());

            OutputStream stD =
                new FileOutputStream("bar.foo");

            org.apache.commons.net.io.Util.copyStream(
                    stO,
                    stD,
                    ftp.getBufferSize(),
/* I'm using the UNKNOWN_STREAM_SIZE constant here, but you can use the size of file too */
                    org.apache.commons.net.io.CopyStreamEvent.UNKNOWN_STREAM_SIZE,
                    new org.apache.commons.net.io.CopyStreamAdapter() {
                        public void bytesTransferred(long totalBytesTransferred,
                                int bytesTransferred,
                                long streamSize) {
                                // Your progress Control code here
                        }
            });
            ftp.completePendingCommand();
        } catch (Exception e) { ... }

答案 1 :(得分:0)

我想也许我们对CountingOutputStream更好,因为它似乎是出于这个目的?

有人在这里回答:Monitoring progress using Apache Commons FTPClient