0

こんにちは、FTP ダウンロード用のステータス バーが必要です。progess で 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 のバッファ サイズを超えていると思われることです (終了時にバッファがいっぱいでない場合)。おそらく、ダウンロードされたバイト数が files[0].getSize() が提供する量よりも多いためでしょうか?

ありがとうございました。

4

1 に答える 1

2

download実際に読み取られるバイト数に関係なく、1024 バイトが追加されます。読み取ったバイト数への参照が既にあります。len- 代わりにこれを使用してください。

于 2012-06-13T09:32:36.330 に答える