java中字符流的用途是什么?为什么我们需要有字节流?我已经通过很多网站我明白得到它...请让我清楚...请不要粘贴谷歌结果
我猜你的意思是Reader界面?如果您正在使用文本,则不必担心每一层的二进制/文本转换.实际上,您可能甚至没有二进制数据进行转换,从概念上来说 - StringReader例如.
使用该Reader接口可以清楚地表明您确实需要文本,并且该文本下面的二进制数据与您无关,只要它可以以某种方式提供为Unicode字符序列.
这是值得的非常在你的头脑清楚的是二进制和文字是不同的.如果您尝试将任意二进制数据视为文本(例如,尝试将图像文件读入字符串),您将丢失信息.为什么您不希望不同类型处理不同形式的数据?
这有点像说,"我们可以将每个对象的数据存储在一个字节数组中,并在需要的时候转换它们的各个部分." 是的,我们可以(如果您可以将不透明的二进制数据转换为/从引用转换)但在封装方面它将是可怕的.该Reader接口是封装的一个层,允许各种数据源,以暴露字符数据(无论它们是否需要解码的二进制数据或没有),和其他代码消耗该字符数据,而无需准确地知道它来自何方.
字符流是处理文本文件等字符数据的便捷方式.您可以采用字节流并为其提供字符编码,并将其有效地转换为字符流,类似地,您可以获取字符流并提供字符编码并有效地将其转换为字节流.
转换通常通过装饰流来完成.正如您可能猜到的,字符编码是将字符转换为字节的算法,反之亦然.