The following code doesn’t work to download a file (btw clen is file’s length):
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));
}
…but this works fine:
int buf;
while ((buf = in.read()) != -1)
out.write(buf);
I’m wondering why, even though the second code segment works quickly. On that note, is there any particular reason to use a byte[] buffer (since it doesn’t seem to be faster, and BufferedInputStream already uses a buffer of its own….?)
Here’s how it should be done.