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