InputStreamReader与FileReader
除了初始化两者之外,我似乎无法确定InputStreamReader
和FileReader
之间的任何区别。 使用其中一个有什么好处吗? 大多数其他文章涵盖FileInputStream
vs InputStreamReader
,但我与FileReader
形成对比。 在我看来,他们都有相同的目的。
首先, InputStreamReader
可以处理所有输入流,而不仅仅是文件。 其他示例是网络连接,类路径资源和ZIP文件。
其次, FileReader
不允许您指定编码,而是使用平台默认编码,这使得它几乎无用,因为当代码在具有不同平台默认编码的系统上运行时,使用它将导致数据损坏。
简而言之,忘记FileReader
存在。
FileReader从文件系统中的文件中读取字符。 InputStreamReader从任何类型的输入流中读取字符。 流可以是FileInputStream,但也可以是从套接字,HTTP连接,数据库blob等获得的流。
我通常更喜欢使用包装FileInputStream的InputStreamReader来读取文件,因为它允许指定特定的字符编码。
FileReader扩展了InputStreamReader。 唯一的区别是FileReader有一些构造函数,它们假设你正在读取一个文件,如String filename
, File file
和FileDescriptor fd
我建议您查看FileReader的源代码以了解更多信息。