總之,我有一個Servlet,它檢索圖片/視頻e t.c.來自底層數據存儲。爲ServletResponce指定InputStream,而不是在OutputStream中複製InputStream
爲了歸檔此我需要將文件的InputStream複製到ServletResponce * 的OutputStream *
從我的角度來看,這不是有效的,因爲我需要複製的文件內存發送之前,指定InputStream會更方便,在讀取緩衝區中的數據後,OutputStream會讀取數據並立即發送。
我看着ServletResponce文檔,它有一些緩衝區的消息數據,所以我有幾個關於它的問題。
這是正確的機制嗎? 如果我決定在Servlet處理結束時不發送文件? 例如: 如果我抄的InputStream在的OutputStream,然後發現,這不是授權請求,用戶無權查看該對象(錯誤在設計也許)我仍然會發送一些數據客戶,儘管這不是我想要的,或者不是。
我正好利用IOUtils.copy爲我處理已經:) 最關心的是第二個問題 - 這是從我的角度來看,流動,因爲我不想送任何東西,直到Servlet的處理已經結束,這可能容易出錯。 4K緩衝區是IOUtils緩衝區的默認大小,因此使用另一個用於Servlet處理的緩衝區將不會有效。 如果我想發送8K數據報,我要麼需要使用IOUtils讀取兩次,要麼添加可配置的複製實現。 – mavarazy 2012-03-13 14:04:03