JSPs are designed for formatting text.
If you want to stream binary data, you're better off doing it from a servlet.
Any characters outside of the "<%...%>" tags will result in an out.println(..) statement being placed in the generated servlet code - even a new line or other whitespace character. This will class with your own handling of the output stream.
If the file lives within your webapp, the simplest thing to do is provide a link as Adeel has mentioned. If not, put the stream handling code in a servlet. If you would like an example of this, I have one on
http://simple.souther.us. Look for SimpleStream.