根据我可以在堆栈溢出上读取的内容,FileReader只接收文件,其中FileInputStream可以读取所有文件。但是使用FileReader有什么好处吗?会更快吗?
我读到:
"FileReader不允许您指定编码,而是使用plaform默认编码,这使得它几乎毫无用处,因为当代码在具有不同平台默认编码的系统上运行时,使用它将导致数据损坏。“
但没能完全理解。平台默认编码意味着什么?
发布于 2014-01-04 22:05:39
主要区别是:
流-基于字节(读或写字节)
阅读器-基于字符(读或写字符)
发布于 2014-01-04 22:16:27
InputStream是一个流,您可以从中读取字节。通常不会直接使用这个类,但如果使用了,则需要二进制数据。它有许多不同的子类,用于来自不同来源的输入,如FileInputStream、AudioInputStream、StringBufferInputStream等。InputStreamReader是InputStream的包装器,它使用您喜欢的任何编码将流的字节转换为字符。通常,在创建InputStreamReader时指定字符编码。有几个不同的构造函数允许您这样做。如果要读取文本数据,可以使用InputStreamReader。首先使InputStream读取数据,然后将其包装在InputStreamReader中。FileReader是一个专门的InputStreamReader,它只能从文件中读取,并且使用默认的平台编码。换句话说,它假定它读取的文件是根据操作系统的平台编码设置创建的。这通常是可以的;但是如果要读取具有不同编码的文件,则应该创建一个FileInputStream并将其包装在一个InputStreamReader中。发布于 2014-01-04 22:03:56
平台默认编码,即JVM正在运行的操作系统使用的编码。
https://stackoverflow.com/questions/20927278
复制相似问题