Printwriter和OutputStream之间有什么区别

时间:2011-07-30 14:20:04

标签: java file-io

首先,我们有PrintWriter

java.io.File f=new java.io.File("s.txt");

   java.io.PrintWriter out=new java.io.PrintWriter(f);

   out.print(5);

   out.print(7);

   out.close();

然后我们有输出流

 java.io.File f=new java.io.File("s.txt");

 java.io.FileOutputStream out=new java.io.FileOutputStream(f);

   out.write(5);

   out.write(7);

   out.close();

区别是什么?

2 个答案:

答案 0 :(得分:29)

OutputStreams适用于二进制数据。作家(包括PrintWriter)适用于 text 数据。

您可能看不到特定情况的不同,因为您正在调用写入单个字符的PrintWriter.write(int) - 如果您使用的字符编码只是将字符映射到同一字节,则对于小于127的字符,那么你会看到相同的结果。但是如果你给它一个不同的编码,那么然后就会看到差异。

PrintWriter的不同之处还在于它抑制了IO异常 - PrintStream也是如此,它是等价于PrintWriter的二进制流。

答案 1 :(得分:3)

从这java2novice.com link我提取了以下内容,这与Jon说的相似:

ServletOutputStream: ServletResponse.getOutputStream() returns一个ServletOutputStream         适合在响应中写入二进制数据。 servlet         容器不对二进制数据进行编码,它会发送原始数据         原样。

PrintWriter: ServletResponse.getWriter()返回发送的PrintWriter对象         字符文本给客户端。 PrintWriter使用该字符         由getCharacterEncoding()返回的编码。如果回应了         尚未指定字符编码,然后它默认         字符编码。