下面的代码不起作用下载文件下载(顺便说一句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_而不是只读那些在每个缓冲区读取的字节。问题解决了!感谢) –