2015-05-19 11 views
9

Chcę przekształcić InputStream is w Stream<String> stream otrzymujących Charset cs w taki sposób, że stream składa się z linii is. Ponadto linia is nie powinna być odczytywana natychmiast, ale tylko w przypadku, gdy potrzebuje tego stream.Konwersja InputStream do strumienia <String> danym ciągiem znaków

+0

i co próbowałeś? Pytania powinny pokazywać wysiłek, włączając próbę lub badania. –

+2

Czy musi to być 'InputStream'? Jeśli zamierzasz czytać pliki, możesz użyć 'Files.lines (Path path, Charset cs)'. Możesz rzucić okiem na kod źródłowy tej metody, aby znaleźć rozwiązanie. – Pshemo

+0

W moim przypadku jest to InputStream pochodzący z 'HttpURLConnection # getInputStream()'. –

Odpowiedz

12

Myślę, że można spróbować:

Stream<String> lines = new BufferedReader(new InputStreamReader(is, cs)).lines(); 
+0

@Pshemo Dzięki za edycję! :) –

+0

Czy istnieje sposób automatycznego rozłączenia HttpURLConnection po przeczytaniu całego InputStream? –

+1

Możesz odczytać strumień w instrukcji 'try-with-resources' i ewentualnie dodać blok' finally', który wywołuje 'disconnect()' w obiekcie 'HttpURLConnection': http://docs.oracle.com/javase/ 7/docs/api/java/net/HttpURLConnection.html # disconnect() –