首先,我们有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();
区别是什么?
答案 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()
返回的编码。如果回应了
尚未指定字符编码,然后它默认
字符编码。