首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileReader在InputStreamReader上

FileReader在InputStreamReader上
EN

Stack Overflow用户
提问于 2015-05-11 08:59:10
回答 2查看 71关注 0票数 0

我正在浏览java.io,有些方面让我感到困惑:

FileReaderInputStreamReader的性能有什么不同吗?

代码语言:javascript
复制
Reader fileReader = new FileReader("input.txt");
Reader fileReader2 = new InputStreamReader(new FileInputStream("input.txt"));

哪一个比另一个更好?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-11 09:00:19

没什么区别。在查看源代码时,您可以理解这一点:

代码语言:javascript
复制
public class FileReader extends InputStreamReader {
    // ...
    public FileReader(String fileName) throws FileNotFoundException {
        super(new FileInputStream(fileName));
    }
    // ...
}

所以这只是一种语法糖。FileReader扩展了InputStreamReader,但除了构造函数之外没有其他更改。

还请注意,FileReader使用系统默认文件编码,并且无法使用它指定自定义编码。这个我建议你不要用。在现代Java 1.7+ NIO中,有一些新的首选方法:

java.nio.file.Files.newBufferedReader(Path):新的UTF-8 BufferedReader java.nio.file.Files.newBufferedReader(Path, Charset):带有指定Charset的新BufferedReader

票数 2
EN

Stack Overflow用户

发布于 2015-05-11 09:03:05

我不会把注意力集中在表演上。我会关注它们之间的巨大正确性差异:FileReader总是使用平台-默认编码,这几乎不是一个好主意。

我认为这实际上比在Charset构造函数中指定InputStreamReader略高一些(至少在某些情况下是这样),即使您传入了平台默认的Charset,但为了清晰和正确,我仍然会这样做。

当然,现在我可能会直接使用Files.newBufferedReader作为一种更简单的方法: a)让我指定Charset;b)默认为UTF-8,这是我通常想要的;c)创建一个BufferedReader,这也是我经常想要的,主要是为了readLine()

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30163430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档