我正在向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