下面的代碼不起作用下載文件下載(順便說一句CLEN是文件的長度):與BufferInputStream工作不正常
int pos = 0, total_pos = 0;
byte[] buffer = new byte[BUFFER_SIZE];
while (pos != -1) {
pos = in.read(buffer, 0, BUFFER_SIZE);
total_pos += pos;
out.write(buffer);
setProgress((int) (total_pos * 100/clen));
}
...但是這工作得很好:
int buf;
while ((buf = in.read()) != -1)
out.write(buf);
我想知道爲什麼,即使第二個代碼段快速運行。關於這一點,有沒有什麼特別的理由使用一個byte []緩衝區(因爲它似乎並沒有更快,已經BufferedInputStream爲使用它自己的緩衝....?)
謝謝st0le我看到我的錯誤是在'out.write(緩衝)'(和pimaster。);那是寫'buffer'的字節的_all_而不是隻讀那些在每個緩衝區讀取的字節。問題解決了!感謝) –