Java ftp строка состояния загрузки

Здравствуйте, мне нужна строка состояния для загрузки по FTP. Я хотел бы получить float <=1 с прогами. Это мой код:

                float status=0;
                FTPFile[] files = ftp.listFiles(REMOTEFILE);
                if (files == null || files.length == 0) {
                    throw new FileNotFoundException();
                }
                long size = files[0].getSize();
                InputStream inputStream = ftp.retrieveFileStream(REMOTEFILE);
                byte buf[] = new byte[1024];
                int len;
                int download=0;
                while ((len = inputStream.read(buf)) > 0){
                    out.write(buf, 0, len);
                    download+=1024;
                    status=(float)download/size; // here it set the progress
                }
                out.close();

Моя проблема в том, что в конце состояние больше 1, и я думаю, что размер буфера превышает 1024 (в случае не полного буфера в конце). Может быть, потому что загруженных байтов больше, чем сколько файлов [0].getSize() дает мне?

Спасибо.

1 ответ

Решение

Вы добавляете 1024 байта к download независимо от того, сколько байтов фактически прочитано. У вас уже есть ссылка на количество прочитанных байтов; len - используйте это вместо.

Другие вопросы по тегам