【问题标题】:Java - Initialize BufferedReader Object Path ObjectJava - 初始化 BufferedReader 对象路径对象
【发布时间】:2016-11-15 18:15:30
【问题描述】:

我真的很困惑。 我看过很多关于如何在 Java 中读取文件的实现,但我读的越多,对我的意义就越小。

我注意到,读取文件的首选方法是使用BufferedReader 而不是Scanner。 但是,我见过这样的例子:

Scanner s = new Scanner(new BufferedReader(...);

不仅仅是:

Scanner s = new Scanner(new File("foo.txt"));

BufferedReader 初始化Scanner 的原因是什么? 这样做有什么好处吗?

现在,我发现更令人困惑的是,在我所见的任何地方,都有使用 Path 对象而不是 File 的建议。 但是,我没有发现用Path 对象初始化BufferedReader 的优雅方法,因为BufferedReaderFileReader 都不能接受Path

当然有一种方法可以做这样的事情:

Path path = Paths.get("foo.txt");
BufferedReader br = new BufferedReader(new FileReader(path.toFile()));

但这看起来很乱。

我对@9​​87654336@ 的问题是:

  • 我应该使用BufferedReader吗?
  • FileReader 的用途是什么?为什么我不能初始化 BufferedReaderStringPath?

【问题讨论】:

  • 是的,您应该使用 BufferedReader。另一个问题的答案是 - just because you can doesn't mean you should 这也适用于第一个问题。
  • @Shark 我不明白 - 你说我应该,但后来建议我不应该,它是哪一个?
  • 你应该。至于“为什么我不能只用字符串或路径初始化 BufferedReader”——编程中有很多变通方法和捷径,它们似乎使事情变得更容易,因为它们去掉了不必要的、可能复杂的部分。但仅仅因为你可以并不意味着你应该。至于你的最后一个问题 - 为什么不能用字符串初始化它,这对课程的作者来说是一个很好的问题。最后,阅读更多内容,并在该特定情况下是否应该做出明智的决定。
  • 这个:stackoverflow.com/a/9648877/3501205 帮助我理解了 FileReader 和 BufferedReader 的概念。

标签: java bufferedreader


【解决方案1】:

我什至应该使用 BufferedReader 吗?

当然,为什么不呢?

FileReader 的用途是什么?

以字符模式读取文件。

为什么我不能只用字符串或路径初始化 BufferedReader?

因为它没有这样的构造函数,如果有的话就是FileReader,它已经存在,所以它是多余的。

【讨论】:

  • 谢谢,现在我读到根本不应该使用FileReader,而应该使用InputStreamReader。我希望有一种明确的做事方式,我问了这个问题,这样我才能真正理解处理这项任务的正确方式。
  • 没有一种“正确的方法”。有几种方法,看你的要求。例如,您可能希望使用非默认字符集构建自己的 InputStreamReader;或具有非默认缓冲区大小的BufferedReader;或者您的输入可能根本不是来自文件。
  • @AlexWeitz 很高兴你知道了。现在是提出FileInputStream 并考虑它是否符合要求的好时机:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2013-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多