除了两者初始化的方式之外,我似乎无法确定InputStreamReader
和FileReader
之间的任何区别。使用其中之一是否有任何好处?大多数其他文章都涵盖了FileInputStream
与InputStreamReader
的对比,但我要与FileReader
进行对比。在我看来,它们都具有相同的目的。
首先,InputStreamReader
可以处理所有输入流,不仅限于文件。其他示例包括网络连接、类路径资源和ZIP文件。
其次,在Java 11之前,FileReader
不允许您指定编码,而是仅使用平台默认编码,这使得它几乎无用,因为在不同平台默认编码的系统上运行代码时,使用它会导致数据损坏。
自Java 11以来,FileReader
是一个有用的快捷方式,可以将 InputStreamReader
包装在 FileInputStream
中。
FileReader
。 - Spliffpublic FileReader(File file, Charset charset) throws IOException
- Vyacheslav BabaninFileReader 是从文件系统中读取字符的类。InputStreamReader 可以从任何类型的输入流中读取字符,这些流可以是 FileInputStream,也可以是从套接字、HTTP 连接、数据库 blob 等获取的流。
通常我更喜欢使用包装 FileInputStream 的 InputStreamReader 从文件中读取数据,因为它允许指定特定的字符编码。
FileReader继承自InputStreamReader。唯一的区别在于,FileReader有构造函数假设你正在从文件中读取,例如String filename
,File file
和FileDescriptor fd
。
我建议您查看FileReader的源代码以获取更多信息。
InputStreamReader
完成它。 - Spliff