需要帮助优化bufferedReader输出

时间:2011-06-13 10:43:17

标签: java servlets bufferedreader

我正在servlet中向浏览器发送文件。我可以使用的最高JDK是1.4.2,我还必须通过URL检索文件。我也试图使用“guessContentTypeFromStream”,但我一直得到null,这在下面的代码示例中使用时会引发异常。我目前必须自己硬编码或编写内容类型。

我想知道的是,我如何重新考虑这段代码,以便尽可能快地传输文件并使用guessContentTypeFromStream? (注意“res”是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();

1 个答案:

答案 0 :(得分:2)

这是您正常读/写数据的方式。

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);
}