angryITguy
angryITguy

Reputation: 9561

Need help optimising bufferedReader output

I am sending a file to the browser in a servlet. The highest JDK I can use is 1.4.2, and I also have to retrieve the file via a URL. I am also trying to use "guessContentTypeFromStream", but I keep getting null which raises an exception when used in the code sample below. I currently have to hard code or work out the content-type myself.

What I would like to know is, how I can re-factor this code so the file transmission is as fast as possible and also use guessContentTypeFromStream ? (Note "res" is HttpServletResponse).

URL servletUrl = new URL(sFileURL); 
URLConnection conn = servletUrl.openConnection();
int read;
BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());

String sContentType =conn.guessContentTypeFromStream(conn.getInputStream());

res.setContentType(sContentType);
//res.setContentType("image/jpeg");

PrintWriter os = res.getWriter();

while((read = bis.read()) != -1){
    os.write(read);
}
//Clean resources
os.flush();

Upvotes: 1

Views: 172

Answers (1)

Kaj
Kaj

Reputation: 10949

This is how you normally read/writes data.

in = new BufferedInputStream(socket.getInputStream(), BUFFER_SIZE);
byte[] dataBuffer = new byte[1024 * 16];
int size = 0;
while ((size = in.read(dataBuffer)) != -1) {
    out.write(dataBuffer, 0, size);
}

Upvotes: 2

Related Questions