【发布时间】:2014-01-19 11:27:15
【问题描述】:
我在消化 Java IO 类中的一些概念时遇到了一些困难。例如有两种类型的流,字节和字符。据我了解,字节流逐字节读取。
1。如果 java 中的 char 存储为 16 位(两个字节)数据类型,我怎么可能使用面向字节的输入流从文件中准确读取 char,例如“A”。文件输入流?
2。是不是我使用的字符(在 ascii 图表上大多在 0 到 122 之间)存储在分配的两个字节中的一个字节中?
3. DataInputStream/DataOutputStream 允许我读取和写入二进制数据,其他输入流如 FileInputStream/FileOutputStream 允许我读取和写入究竟是什么?我基本上想知道当我希望将数据输出为我可以阅读的文本时使用哪个流(使用像记事本这样的简单文本编辑器),以及何时将其编码为原始二进制数据(在记事本中看起来像垃圾的文本)?
努力理解 java 中流的概念以及何时使用。
【问题讨论】:
-
字符流处理字符,而不是字节。说字符流“逐字节读取”是不准确的。
-
char是 16位数据类型。它不存储字符;它存储一个 UTF-16 代码单元。恰好一个或两个 UTF-16 代码单元构成一个 UTF-16 代码点。代码点标识特定的 Unicode 字符。此外,您正在查看错误的字符集。 Java 通常使用Unicode,尽管某些流类默认为操作系统默认字符集。
标签: java stream binary char java-io