PrintWriter 与 ServletOutputStream的区别

原创 2007年09月13日 17:38:00
1. PrintWriter是以字符为单位,对所有的信息进行处理,而ServletOutputStream仅对二进制的资料进行处理。
2. PrintWriter在输出字符文本时内部需要将字符串转换成某种字符集编码的字节数组,使用他的好处就是不需要自己来完成从字符串到字节数组的转换。 转换的字符集编码是通过设置setContentTpye或setCharacterEncoding或setLocale等方法实现的;使用ServletOutputStream对象直接从一个字节输入流中读取出来,然后再原封不动的输出到客服端。
3. 这两个方法相互排斥,只能调用其一,如果要用,则要在换方法之前调用flush(),将缓冲区数据冲掉。
4. PrintWriter自动清空缓冲区的功能被使能时(构造函数中autoFlush置为true),仅当println()方法被调用时才自动清缓冲区,而不是像PrintStream一样遇到一个换行符就清缓冲。 

两种方法的取舍:
使用PrintWriter会占用一些系统开销,因为它是为处理字符流的输出输出功能。因此PrintWriter应该使用在确保有字符集转换的环境中。换句话说,在你知道servlet返回的仅仅是二进制数据时候,应该使用ServletOutputStream,这样你可以消除字符转换开销,当servlet容器不用处理字符集转换的时候。

附:写文件最佳组合  
  PrintWriter   out   =   new   PrintWriter(  
          new   BufferedWriter(  
                new   FileWriter(filename)))  
  PrintWriter   提供print系方法  
  BufferedWriter   提供缓冲,用以加速  
  FileWriter   用于写文件

PrintWriter,DataOutputStream和ServletOutputStream的使用

处理二进制字节流: outputstream,inputstream 是接口, FileOutPutStream,FileInputStream实现上述接口 BufferedInputStream,B...
  • ninjya_luck
  • ninjya_luck
  • 2015年02月03日 10:26
  • 1566

PrintWriter与ServletOutputStream的区别

PrintWriter与ServletOutputStream的区别
  • kidoo1012
  • kidoo1012
  • 2017年02月18日 11:49
  • 227

用PrintWriter解决servlet的中文输出问题

在Java的Servlet中用ServletOutputStream.print()方法输出中文会有问题,如 ServletOutputStream out = response.getOutp...
  • zhoudong1017
  • zhoudong1017
  • 2012年03月27日 10:33
  • 6689

servlet向客户端发送数据(PrintWriter ,ServletOutputStream)

Servlet向数据库发送数据有两种,1、使用PrintWriter字符输出流public void doGet(HttpServletRequest request, HttpServletResp...
  • daliyuan350649623
  • daliyuan350649623
  • 2016年09月10日 11:34
  • 1608

PrintWriter与ServletOutputStream的区别之文件下载

先看代码 第一种: out = response.getWriter(); response.reset(); response.addHeader("Content-Disposition"...
  • QIAOtinger
  • QIAOtinger
  • 2017年03月15日 10:43
  • 717

跟学韩老师学习java-servlet篇之三printwriter与outputStream区别、sendRedirect传参数、中文乱码

第18讲 printWriter:我们一般用来传的是对像 而outputStream用来传的是二进制,故上传文件时,一定要使用此。 注意到,二才不能同时使用,会报错的。原因:web服务器关闭了,...
  • bonlog
  • bonlog
  • 2012年11月11日 09:50
  • 6043

PrintWriter和ServletOutputStream的区别

1. PrintWriter是以字符为单位,对所有的信息进行处理,而ServletOutputStream仅对二进制的资料进行处理。  2.  PrintWriter在输出字符文本时内部需要将字符串...
  • yanxudong001
  • yanxudong001
  • 2013年11月09日 11:05
  • 291

PrintStream和PrintWriter的区别

PrintStream和PrintWriter的API几乎相同,都能输出各种形式的数据,构造方法也几乎相同 PrintWriter多了个接受Writer参数 API比较: 那么,它们的区别究竟在...
  • zhhtao89
  • zhhtao89
  • 2015年12月01日 14:45
  • 1117

PrintWriter和BufferedWriter的区别

1. PrintWriter的print、println方法可以接受任意类型的参数,而BufferedWriter的write方法只能接受字符、字符数组和字符串; 2. PrintWriter的...
  • qq1175421841
  • qq1175421841
  • 2016年09月02日 10:27
  • 2728

OutputStream与PrintWriter的使用与区别

1.OutputStream使用步骤: 获取输出流 设置中文 将字符串转换成字节数组 调用outputStream.write() 这里只贴出doGet方法的内容: protected void...
  • feipeng8848
  • feipeng8848
  • 2017年02月21日 16:03
  • 1226
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PrintWriter 与 ServletOutputStream的区别
举报原因:
原因补充:

(最多只允许输入30个字)