Printwriter和ProsputStream有什么区别

2022-09-03 00:14:14

首先,我们有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();

有什么区别?


答案 1

OutputStreams适用于二进制数据。编写器(包括 )用于文本数据。PrintWriter

当您调用写入单个字符时,您可能看不到特定情况下的差异 - 如果您使用的字符编码只是将字符映射到相同的字节,对于小于127的字符,您将看到相同的结果。但是,如果您为其提供不同的编码,那么您将看到差异。PrintWriter.write(int)

PrintWriter也不同之处在于它抑制了 IO 异常 - 就像 这样,这是二进制流的等效项。PrintStreamPrintWriter


答案 2

从这个 java2novice.com 链接中,我提取了以下内容,这与Jon所说的类似:

ServletOutputStream:一种适合在响应中写入二进制数据的方法。servlet 容器不对二进制数据进行编码,而是按原样发送原始数据。ServletResponse.getOutputStream() returnsServletOutputStream

PrintWriter:返回将字符文本发送到客户端的对象。使用 返回的字符编码。如果尚未指定响应的字符编码,则执行默认字符编码。ServletResponse.getWriter()PrintWriterPrintWritergetCharacterEncoding()