【发布时间】: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 的优雅方法,因为BufferedReader 和FileReader 都不能接受Path。
当然有一种方法可以做这样的事情:
Path path = Paths.get("foo.txt");
BufferedReader br = new BufferedReader(new FileReader(path.toFile()));
但这看起来很乱。
我对@987654336@ 的问题是:
- 我应该使用
BufferedReader吗? -
FileReader的用途是什么?为什么我不能初始化BufferedReader与String或Path?
【问题讨论】:
-
是的,您应该使用 BufferedReader。另一个问题的答案是 -
just because you can doesn't mean you should这也适用于第一个问题。 -
@Shark 我不明白 - 你说我应该,但后来建议我不应该,它是哪一个?
-
你应该。至于“为什么我不能只用字符串或路径初始化 BufferedReader”——编程中有很多变通方法和捷径,它们似乎使事情变得更容易,因为它们去掉了不必要的、可能复杂的部分。但仅仅因为你可以并不意味着你应该。至于你的最后一个问题 - 为什么不能用字符串初始化它,这对课程的作者来说是一个很好的问题。最后,阅读更多内容,并在该特定情况下是否应该做出明智的决定。
-
这个:stackoverflow.com/a/9648877/3501205 帮助我理解了 FileReader 和 BufferedReader 的概念。
标签: java bufferedreader