![Java核心技术·卷Ⅱ:高级特性(原书第10版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/937/34339937/b_34339937.jpg)
上QQ阅读APP看书,第一时间看更新
2.2.2 如何读入文本输入
最简单的处理任意文本的方式就是使用在卷Ⅰ中我们广泛使用的Scanner类。我们可以从任何输入流中构建Scanner对象。
或者,我们也可以将短小的文本文件像下面这样读入到一个字符串中:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/051-i.jpg?sign=1738814052-qxzENOmIxh2jOha2SOoSHNibwPy9zVIJ-0-4d4566acd2233b58500817b399b270a8)
但是,如果想要将这个文件一行行地读入,那么可以调用:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/051-2-i.jpg?sign=1738814052-gK4OkAyTae6wkIbJu5I2HUE5Nr6aXa0Q-0-ac509cc045c549992968239c4c35ba8c)
如果文件太大,那么可以将行惰性处理为一个Stream<String>对象:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/051-3-i.jpg?sign=1738814052-L5gu6P0Axwh7XBLpJkmBFqCiksXWTGND-0-eedcbb05b4fc0791d4ee9fdc2def36fc)
在早期的Java版本中,处理文本输入的唯一方式就是通过BufferedReader类。它的readLine方法会产生一行文本,或者在无法获得更多的输入时返回null。典型的输入循环看起来像下面这样:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/052-i.jpg?sign=1738814052-KbQDVQzcEoNWc0zWvSWOe09Z4bXn1wVK-0-1d9c39b52ceb3c7165320f336dae830b)
如今,BufferedReader类又有了一个lines方法,可以产生一个Stream<String>对象。但是,与Scanner不同,BufferedReader没有用于任何读入数字的方法。