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
- используйте это вместо.