【发布时间】:2012-06-04 16:53:53
【问题描述】:
谁能解释一下OutputStream 和Writer 之间的区别?我应该使用以下哪些类?
【问题讨论】:
-
在这方面没有获得密切的投票。这是一个真实的问题,有真实的答案。
-
我的近距离投票是因为真正的答案在 Javadoc 中,OP 应该首先查看,所以这个问题没有永久价值。
标签: java outputstream
谁能解释一下OutputStream 和Writer 之间的区别?我应该使用以下哪些类?
【问题讨论】:
标签: java outputstream
流在字节级别工作,它们可以读取 (InputStream) 和写入 (OutputStream) 字节或字节列表到流。
Reader/Writers 在流的顶部添加了字符的概念。由于字符只能通过使用编码转换为字节,因此读取器和写入器具有编码组件(可以自动设置,因为 Java 具有默认编码属性)。读取(Reader)或写入(Writer)的字符通过编码自动转换为字节并发送到流中。
【讨论】:
OutputStream 类逐字节写入目标,而 Writer 类逐字符写入目标>
【讨论】:
Character 是用词不当,因为它实际上代表 UTF-16 Code Unit,而不是 Unicode Character 或 Code Point。
OutputStream 是可以写入信息的流。这是相当普遍的,因此有专门的OutputStream 用于特殊目的,例如写入文件。流只能写入字节数组。
Writers 提供了更大的灵活性,因为它们可以在考虑特殊编码的同时写入字符甚至字符串。
拿哪一个真的是你想写什么的问题。如果你已经有字节,你可以直接使用流。如果您有字符或字符串,如果您想将它们写入流,则需要自己将它们转换为字节,或者您需要使用 Writer 来为您完成这项工作。
【讨论】:
OutputStream,例如通过OutputStreamWriter。跨度>
Writer 将字符串写入流,而仅使用流时不能这样做。编辑了我的答案以使其更清楚。
Writer 将字符串写入流”
OutputStream 使用裸字节,而Writer 使用编码 字符。
【讨论】:
Writer 使用UTF-16 Code Units,而不是Encoded Characters
Reader/Writer 类层次结构是面向字符的,Input Stream/Output Stream 类层次结构是面向字节的。 基本上有两种类型的流。用于处理字节流的字节流和用于处理字符流的字符流。在字节流中,输入/输出流是层次结构顶部的抽象类,而写入器/读取器是抽象的字符流层次结构顶部的类。
干杯!!!
【讨论】: