Автор оригинала: Eugen Paraschiv.
1. Обзор
В этом кратком руководстве мы рассмотрим, как преобразовать стандартную строку в InputStream , используя обычную Java, Guava и библиотеку ввода-вывода Apache Commons.
Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.
2. Преобразование С Помощью Простой Java
Давайте начнем с простого примера использования Java для выполнения преобразования – с использованием промежуточного байта массива:
@Test public void givenUsingPlainJava_whenConvertingStringToInputStream_thenCorrect() throws IOException { String initialString = "text"; InputStream targetStream = new ByteArrayInputStream(initialString.getBytes()); }
Обратите внимание, что метод getBytes() кодирует эту Строку , используя кодировку платформы по умолчанию, поэтому, чтобы избежать нежелательного поведения, вы можете использовать getBytes(Charset charset) и контролировать процесс кодирования .
3. Преобразование С Помощью Гуавы
Guava не предоставляет прямого метода преобразования, но позволяет нам получить CharSource из Strong и легко преобразовать его в ByteSource . Затем легко получить InputStream :
@Test public void givenUsingGuava_whenConvertingStringToInputStream_thenCorrect() throws IOException { String initialString = "text"; InputStream targetStream = CharSource.wrap(initialString).asByteSource(StandardCharsets.UTF_8).openStream(); }
Однако обратите внимание, что метод asByteSource помечен как @Beta . Это означает, что он может быть удален в будущем выпуске гуавы. Мы должны иметь это в виду.
4. Преобразование С помощью Commons IO
Наконец, библиотека ввода-вывода Apache Commons предоставляет отличное прямое решение:
@Test public void givenUsingCommonsIO_whenConvertingStringToInputStream_thenCorrect() throws IOException { String initialString = "text"; InputStream targetStream = IOUtils.toInputStream(initialString); }
Наконец, обратите внимание, что в этих примерах мы оставляем входной поток открытым – не забудьте закрыть его, когда закончите .
5. Заключение
В этой статье мы представили три простых и кратких способа получения InputStream из простой строки.
Как всегда, полный исходный код доступен на GitHub .