加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 有没有一种简单的方法在Guava中循环stdin?

发布时间:2020-12-15 05:20:22 所属栏目:Java 来源:网络整理
导读:在Apache Commons中,我可以写: LineIterator it = IOUtils.lineIterator(System.in,"utf-8");while (it.hasNext()) { String line = it.nextLine(); // do something with line} 番石榴有什么相似之处吗? 解决方法 好吧,首先……这不是你特别需要一个库的
在Apache Commons中,我可以写:

LineIterator it = IOUtils.lineIterator(System.in,"utf-8");
while (it.hasNext()) {
    String line = it.nextLine();
    // do something with line
}

番石榴有什么相似之处吗?

解决方法

好吧,首先……这不是你特别需要一个库的东西,因为它只用直接的JDK就可以了

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in,Charsets.UTF_8));
// okay,I guess Charsets.UTF_8 is Guava,but that lets us not worry about
// catching UnsupportedEncodingException
while (reader.ready()) {
  String line = reader.readLine();
}

但如果你想要它更多的收藏品 – y番石榴提供List<String> CharStreams.readLines(Readable).

我认为我们不提供迭代器,因为没有任何好的方法来处理IOExceptions的存在. Apache的LineIterator似乎默默地捕获IOException并关闭迭代器,但是……这似乎是一个令人困惑,冒险且并不总是正确的方法.基本上,我认为这里的“Guava方法”是要么将整个输入读入List< String>一下子,或者自己做BufferedReader风格的循环,并决定如何处理IOExceptions的潜在存在.

一般来说,Guava的大多数I / O实用程序都专注于可以关闭和重新打开的流,例如文件和资源,但不像System.in.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读