我了解 Java 字符流包装字节流,以便根据系统默认值或其他特别定义的字符集解释底层字节流。
我的系统默认字符集是 UTF-8。
如果我使用 aFileReader
读取文本文件,一切看起来都很正常,因为默认字符集用于解释来自底层InputStreamReader
. 如果我明确定义InputStreamReader
将 UTF-8 编码的文本文件读取为 UTF-16,那么一切显然看起来很奇怪。使用类似字节流FileInputStream
并将其输出重定向到 System.out,一切看起来都很好。
所以,我的问题是;
为什么使用字符流有用?
为什么我要使用字符流而不是直接使用字节流?
什么时候定义一个特定的字符集有用?