, 나는 쓸 수 있습니다 : 구아바 유사한 아무것도Guava에서 stdin을 반복하는 간단한 방법이 있습니까? 아파치 코 몬즈에서
LineIterator it = IOUtils.lineIterator(System.in, "utf-8");
while (it.hasNext()) {
String line = it.nextLine();
// do something with line
}
있습니까?
, 나는 쓸 수 있습니다 : 구아바 유사한 아무것도Guava에서 stdin을 반복하는 간단한 방법이 있습니까? 아파치 코 몬즈에서
LineIterator it = IOUtils.lineIterator(System.in, "utf-8");
while (it.hasNext()) {
String line = it.nextLine();
// do something with line
}
있습니까?
음이 그것을
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();
}
처럼 직선 JDK와 함께 해 드리겠습니다 주어진, 당신은 특히에 대한 라이브러리를 필요 것이 아닙니다 ...로 시작하지만 당신은 더 컬렉션 수 있도록하려면 -y 구아바는 List<String> CharStreams.readLines(Readable)
을 제공합니다.
실제로 IOException
의 존재를 다루는 좋은 방법이 없기 때문에 Iterator
을 제공하지 않습니다. 아파치의 LineIterator
은 자동으로 IOException
을 붙잡고 이터레이터를 종료하지만, 혼란스럽고 위험하고 항상 올바른 접근 방식은 아닌 것처럼 보입니다. 기본적으로, 나는 "구아바 접근법"은 전체 입력을 한번에 List<String>
전체를 읽거나 BufferedReader
스타일 루프를 스스로 결정하고 어떻게 결정할 것인가라고 생각합니다. 은 잠재적 인 존재를 다루고 자합니다. IOException
s .
대부분의 Guava의 I/O 유틸리티는 파일 및 리소스와 같이 닫히거나 다시 열 수있는 스트림에 중점을두고 있지만 실제로는 System.in
을 좋아하지 않습니다.
Scanner sc = new Scanner(System.in,"UTF-8");
while(sc.hasNext()) {
String next = sc.nextLine();
}
당신을 위해 구아바 필요하지 않습니다이
자바 (8) 이후 BufferedReader
이 쉽게 소비 할 수있는 라인의 스트림을 반환 새로운 방법 lines()
:
BufferedReader reader = new BufferedReader(
new InputStreamReader(System.in, StandardCharsets.UTF_8));
reader.lines()
.forEach(line -> { // or any other stream operation
// process liness
})
당신이 정말로 원하는 경우 구아바없이이 작업을 수행하려면 Java의 ['StandardCharsets.UTF_8'] (http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html#UTF_8)을 사용할 수 있습니다. 7. 그러나 하드 코딩 UTF-8은 어쨌든 최상의 아이디어가 아닐 것입니다 (주로 반대되는 것으로 잘 지정된 입력을 허용하지 않는 한) stdin에서 사용자 상호 작용에 영향을 미침). –
오, 그래서 그들은 자바 7에서 그것을 추가했습니다. 충분히 오래 걸렸습니다. –
예, 누군가 힌트를 받았습니다 .-) –