wul*_*pro 0 java iostream java-io
我理解Java字符流包装字节流,以便根据系统默认值或其他特定定义的字符集来解释基础字节流.
我的系统默认字符集是UTF-8.
如果我使用a FileReader来读取文本文件,一切看起来都很正常,因为默认的char-set用于解释底层的字节InputStreamReader.如果我明确定义一个InputStreamReader以UTF-16格式读取UTF-8编码的文本文件,那么一切看起来都很奇怪.使用类似的字节流FileInputStream并将其输出重定向到System.out,一切看起来都很好.
所以,我的问题是;
为什么使用字符流很有用?
为什么我会使用字符流而不是直接使用字节流?
什么时候定义特定的字符集很有用?
处理字符串的代码只能在文本方面"思考" - 例如,逐行读取输入源,您不想关心该源的性质.
但是,存储通常是面向字节的 - 因此您需要在源的字节导向视图(封装的InputStream)和源的字符导向视图(封装的)之间创建转换Reader.
因此,(比方说)计算输入源中文本行的方法应该采用Reader参数.如果要计算两个文件中的文本行,其中一个文件以UTF-8编码,其中一个以UTF-16编码,则为每个文件创建一个InputStreamReadera左右FileInputStream,每次指定适当的编码.
(就个人而言,我会FileReader完全避免- 事实上它不允许你指定编码使它无用的IMO.)
| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |