прогресс загрузки в FTPClient

Я использую commons-net FTPClient для загрузки некоторых файлов.
Как я могу узнать о ходе загрузки (количество загруженных сейчас байтов)?

Спасибо


person Ariyan    schedule 12.03.2012    source источник
comment
Вы видели это? stackoverflow.com/questions/2591688/   -  person redDevil    schedule 13.03.2012


Ответы (2)


Конечно, просто используйте CopyStreamListener. . Ниже вы найдете пример (скопированный из вики-сайта commons-io) извлечения файла, так что вы можете легко изменить его в обратном порядке.

    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) { ... }
person Łukasz Rżanek    schedule 12.03.2012
comment
Я использовал это решение, метод public void bytesTransferred (long totalBytesTransferred, int bytesTransferred, long streamSize), вызываемый после каждого переданного байта, я не могу обновить свой пользовательский интерфейс, поскольку его поток залит с вызовами обновления пользовательского интерфейса. Я использовал в android, кто-нибудь может помочь, почему это происходит @Lukasz - person Iftikar Urrhman Khan; 20.11.2014

Я думаю, что, возможно, нам лучше использовать CountingOutputStream, поскольку он, кажется, предназначен именно для этой цели?

На это кто-то ответил: Мониторинг прогресса с помощью Apache Commons FTPClient

person bobjandal    schedule 28.06.2012