首先,我们有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();然后我们有outputstream
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();有什么不同?
发布于 2011-07-30 22:22:39
OutputStreams用于二进制数据。编写器(包括PrintWriter)适用于文本数据。
您可能看不到特定情况下的差异,因为您调用的PrintWriter.write(int)只写入单个字符-如果您使用的字符编码只是将字符映射到相同的字节,对于小于127的字符,那么您将看到相同的结果。但是如果你给它一个不同的编码,你就会看到不同。
PrintWriter的不同之处还在于它抑制IO异常- PrintStream也是如此,它是PrintWriter的二进制流的等价物。
发布于 2013-02-20 23:34:32
从这个java2novice.com link中,我提取了以下内容,这与Jon所说的类似:
ServletOutputStream: ServletResponse.getOutputStream() returns适用于在响应中写入二进制数据的ServletOutputStream。servlet容器不对二进制数据进行编码,而是按原样发送原始数据。
PrintWriter: ServletResponse.getWriter()返回将字符文本发送到客户端的PrintWriter对象。PrintWriter使用getCharacterEncoding()返回的字符编码。如果没有指定响应的字符编码,那么它将使用默认的字符编码。
https://stackoverflow.com/questions/6883715
复制相似问题