2015-06-08 37 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

相关问题