Using Java HttpUrlConnection to download a PDF file,buffer set to 1024 bytes Wrong,but 8 is ok

I want to use java(httpurlconnection class) to download a pdf file,but have some thing puzzle,the core code is:

BufferedInputStream inputStream = new BufferedInputStream(httpConn.getInputStream());
OutputStream output = new FileOutputStream("F:/httpclient-tutorial.pdf");
byte[] infoBytes = new byte[BUFFER];
while(inputStream.read(infoBytes) != -1){
    output.write(infoBytes, 0, BUFFER);
}  

Question:when the BUFFER is 1024,get the pdf file is larger than real one;but the BUFFER is 8,then it's ok. I don't know why it is? Has anyone know about that?

Jon Skeet
people
quotationmark

You're unconditionally writing out the whole of the buffer on each iteration. You should only write out as many bytes as you've just read:

int bytesRead;
while((bytesRead = inputStream.read(infoBytes)) != -1){
    output.write(infoBytes, 0, bytesRead);
} 

people

See more on this question at Stackoverflow