В этом кратком руководстве мы рассмотрим преобразование InputStream
в Reader
с использованием Java, затем Guava и, наконец, Apache Commons IO.
Эта статья является частью серии « Java — Back to Basic » здесь, на ForEach.
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
Наконец — решение с использованием 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 .