从文件中读取。哪种方法更好,为什么?

时间:2012-01-24 12:16:22

标签: java java-io

BufferedReader buf2=new BufferedReader(
    new InputStreamReader(new FileInputStream("D:/info.txt")));

这两种读取文件内容的方法中哪种方法更好,为什么?

BufferedReader buf=new BufferedReader(new FileReader("D:/info.txt"));

4 个答案:

答案 0 :(得分:3)

两条线都是等价的;在这两种情况下,您都会得到BufferedReader,这样您就可以从文件中读取文本。

第一种方法的一个可能的优点是您可以稍微更改它以指定要用于读取文件的字符编码,例如:

BufferedReader buf2 = new BufferedReader(new InputStreamReader(
    new FileInputStream("D:/info.txt"), "UTF-8"));

FileReader不允许您指定字符编码,并且始终使用您平台的默认字符编码,这并不总是您想要的。

答案 1 :(得分:1)

来自java docs:

  

FileReader用于读取字符流。要读取原始字节流,请考虑使用FileInputStream。

所以,这取决于你的要求。

为了更清晰,请继续阅读:

  

FileReader无法处理网络连接流等。

     

FileReader不关心编码,但使用平台默认编码,因此限制了平台独立性。

因此,忘记FileReader(大部分时间)。

答案 2 :(得分:1)

读者用于文本I / O,而Streams用于二进制I / O.使用Reader时必须注意编码/解码问题,这可以通过InputStream来避免。

请查看FileInputStream vs FileReader了解详情。

答案 3 :(得分:1)

如果按原样使用,两者都具有完全相同的效果。但是,使用InputStreamReader允许您将文本编码指定为构造函数的第二个参数,并且您应该几乎总是这样做,因为There Ain't No Such Thing as Plain Text