Автор оригинала: Eugen Paraschiv.
В этом кратком руководстве мы рассмотрим преобразование InputStream в Reader с использованием Java, затем Guava и, наконец, Apache Commons IO.
Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.
1. С Java
Во – первых, давайте рассмотрим простое решение Java- использование легкодоступного InputStreamReader :
@Test public void givenUsingPlainJava_whenConvertingInputStreamIntoReader_thenCorrect() throws IOException { InputStream initialStream = new ByteArrayInputStream("With Java".getBytes()); Reader targetReader = new InputStreamReader(initialStream); targetReader.close(); }
2. С Гуавой
Далее – давайте взглянем на решение Guava – использование промежуточного массива байтов и строки:
@Test public void givenUsingGuava_whenConvertingInputStreamIntoReader_thenCorrect() throws IOException { InputStream initialStream = ByteSource.wrap("With Guava".getBytes()).openStream(); byte[] buffer = ByteStreams.toByteArray(initialStream); Reader targetReader = CharSource.wrap(new String(buffer)).openStream(); targetReader.close(); }
Обратите внимание, что решение Java проще, чем этот подход.
3. С помощью Commons IO
Наконец – решение с использованием Apache Commons IO – также с использованием промежуточной строки:
@Test public void givenUsingCommonsIO_whenConvertingInputStreamIntoReader_thenCorrect() throws IOException { InputStream initialStream = IOUtils.toInputStream("With Commons IO"); byte[] buffer = IOUtils.toByteArray(initialStream); Reader targetReader = new CharSequenceReader(new String(buffer)); targetReader.close(); }
И вот вам он – 3 быстрых способа преобразования входного потока в Java Reader . Обязательно ознакомьтесь с образцом на GitHub .