
上QQ阅读APP看书,第一时间看更新
2.2.2 如何读入文本输入
最简单的处理任意文本的方式就是使用在卷Ⅰ中我们广泛使用的Scanner类。我们可以从任何输入流中构建Scanner对象。
或者,我们也可以将短小的文本文件像下面这样读入到一个字符串中:

但是,如果想要将这个文件一行行地读入,那么可以调用:

如果文件太大,那么可以将行惰性处理为一个Stream<String>对象:

在早期的Java版本中,处理文本输入的唯一方式就是通过BufferedReader类。它的readLine方法会产生一行文本,或者在无法获得更多的输入时返回null。典型的输入循环看起来像下面这样:

如今,BufferedReader类又有了一个lines方法,可以产生一个Stream<String>对象。但是,与Scanner不同,BufferedReader没有用于任何读入数字的方法。