0

您好,我需要一个用于 FTP 下载的状态栏。我想获得一个浮动 <=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 的缓冲区大小(如果最后没有完整的缓冲区)。也许是因为下载的字节数超过了 files[0].getSize() 给我的数量?

谢谢你。

4

1 回答 1

2

download无论实际读取多少字节,都添加 1024 个字节。您已经拥有读取的字节数的参考;len- 改用这个。

于 2012-06-13T09:32:36.330 回答