2015-06-08 34 views
-1

當在Java中增加一些內容,HttpServletResponse的我可以得到響應作家和追加:HttpServletResponse的 - 寫響應作家VS的OutputStream

httpResponse.getWriter().append("Some Content"); 

或者,我可以給OutputStream中添加內容:

ServletOutputStream servletOut = httpResponse.getOutputStream(); 
servletOut.write(someByteArray); 

兩者之間的唯一區別是第一個獲取字符串/字符序列,第二個獲取字節(當然內容類型也受到影響)?我應該更喜歡一個嗎?我應該什麼時候使用哪個?

+0

請看http://stackoverflow.com/questions/6883715/whats-the-difference-between-printwriter-and-outputstream –

回答

1

實際上..字節流將只在國際化的情況下比字符流顯着。

Java平臺使用Unicode約定存儲字符值。字符流I/O自動將此內部格式轉換爲本地字符集和從本地字符集轉換。在西方語言環境中,本地字符集通常是ASCII的8位超集。

對於大多數應用程序來說,字符流的I/O不會比字節流的I/O複雜。使用流類完成的輸入和輸出自動轉換爲本地字符集和從本地字符集轉換。一個使用字符流代替字節流的程序會自動適應本地字符集並準備好進行國際化 - 所有這些都不需程序員付出額外的努力。

如果國際化不是優先考慮的事情,那麼您可以簡單地使用字符流類而不必關注字符集問題。之後,如果國際化成爲重中之重,那麼您的程序可以進行調整而不需要大量重新編碼。

希望這回答你的問題......

1

ServletOutputStream: ServletResponse.getOutputStream()返回一個適用於在響應中寫入二進制數據的ServletOutputStream。 servlet容器不編碼二進制數據,它原樣發送原始數據。

PrintWriter:ServletResponse.getWriter()返回將字符文本發送到客戶端的PrintWriter對象。 PrintWriter使用getCharacterEncoding()返回的字符編碼。如果響應的字符編碼沒有被指定,那麼它進行默認的字符編碼。

1

下表顯示它們之間的差異,你可以使用任何一種基於要求其配合在表中。

enter image description here

相關問題