gpt4 book ai didi

java - 为什么是字符流?

转载 作者:行者123 更新时间:2023-12-01 06:47:46 25 4
gpt4 key购买 nike

我了解 Java 字符流包装字节流,以便根据系统默认值或其他专门定义的字符集解释底层字节流。

我的系统默认字符集是UTF-8。

如果我使用 FileReader 读取文本文件,一切看起来都很正常,因为默认字符集用于解释来自底层 InputStreamReader 的字节。如果我显式定义一个 InputStreamReader 来读取 UTF-8 编码的文本文件作为 UTF-16,那么一切显然看起来都很奇怪。使用像 FileInputStream 这样的字节流并将其输出重定向到 System.out,一切看起来都很好。

所以,我的问题是;

  • 为什么使用字符流很有用?

  • 为什么要使用字符流而不是直接使用字节流?

  • 什么时候定义特定的字符集有用?

最佳答案

处理字符串的代码应该只根据文本“思考” - 例如,逐行读取输入源,您不想关心该源的性质。

但是,存储通常是面向字节的 - 因此您需要在源的面向字节的 View (由 InputStream 封装)和源的面向字符的 View (由 Reader 封装)。

因此,计算输入源中文本行数的方法应该采用 Reader 参数。如果您想计算两个文件中的文本行数,其中一个以 UTF-8 编码,另一个以 UTF-16 编码,您需要围绕 创建一个 InputStreamReader >FileInputStream 为每个文件,每次指定适当的编码。

(就我个人而言,我会完全避免 FileReader - 事实上,它不允许您指定编码,因此在我看来毫无用处。)

关于java - 为什么是字符流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5351510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com