Ну, чтобы начать с ... это не то, что вам особенно нужна библиотека для, учитывая, что это выполнимо только с прямым 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 Guava предоставляет List<String> CharStreams.readLines(Readable)
.
Я думаю, что мы не предоставляем Iterator
, потому что на самом деле нет хорошего способа иметь дело с наличием IOException
. Apache LineIterator
, похоже, молча поймал IOException
и закрыл итератор, но ... это похоже на запутанный, рискованный и не всегда правильный подход. В принципе, я думаю, что «подход Guava» здесь либо либо полностью прочитать весь ввод в List<String>
, либо сделать цикл BufferedReader
самостоятельно, и решить, как вы хотите иметь дело с потенциальным присутствием IOException
s ,
Большинство утилит ввода-вывода Guava, в общем, ориентированы на потоки, которые можно закрыть и открыть, например файлы и ресурсы, но не очень понравятся System.in
.
Если вы действительно хотите для этого без Guava, вы можете использовать ['StandardCharsets.UTF_8'] (http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html#UTF_8) из Java 7. Но жесткая кодировка UTF-8, вероятно, не самая лучшая идея в любом случае (если вы в первую очередь не принимаете четко заданный вход как противоположный для взаимодействия с пользователем на stdin). –
О, так что они _did_ добавляют это в Java 7. Приняли их достаточно долго. –
Да, кто-то взял несколько советов ;-) –