我正在向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();
不要逐字读取字符。顺便说一句,你为什么从输入流中读取数据,但写入作者? – Kaj 2011-06-13 10:48:51
@Kaj。是的,我知道char-by-char是慢的。只需寻找一个使用缓冲区的干净实现。 – giulio 2011-06-13 11:10:42
看到我的答案,它显示了如何读取/写入块。 – Kaj 2011-06-13 11:15:59