Перейти к основному содержимому

Строка Java для InputStream

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы рассмотрим, как преобразовать стандартную строку в InputStream , используя обычную Java, Guava и библиотеку ввода-вывода Apache Commons.

Эта статья является частью серии «Java — Back to Basic» здесь, на ForEach.

2. Преобразование с помощью обычной Java

Давайте начнем с простого примера использования Java для преобразования — с использованием промежуточного массива байтов :

@Test
public void givenUsingPlainJava_whenConvertingStringToInputStream_thenCorrect()
throws IOException {
String initialString = "text";
InputStream targetStream = new ByteArrayInputStream(initialString.getBytes());
}

Обратите внимание, что метод getBytes() кодирует эту строку , используя кодировку платформы по умолчанию, поэтому, чтобы избежать нежелательного поведения, вы можете использовать getBytes(кодировка кодировки) и управлять процессом кодирования .

3. Преобразование с помощью гуавы

Guava не предоставляет метода прямого преобразования, но позволяет нам получить CharSource из String и легко преобразовать его в 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 . Это означает, что его можно будет удалить в будущем выпуске Guava. Мы должны помнить об этом.

4. Преобразование с помощью Commons IO

Наконец, библиотека Apache Commons IO предоставляет отличное прямое решение:

@Test
public void givenUsingCommonsIO_whenConvertingStringToInputStream_thenCorrect()
throws IOException {
String initialString = "text";
InputStream targetStream = IOUtils.toInputStream(initialString);
}

Наконец, обратите внимание, что в этих примерах мы оставляем входной поток открытым — не забудьте закрыть его, когда закончите .

5. Вывод

В этой статье мы представили три простых и лаконичных способа получить InputStream из простой строки.

Как всегда, полный исходный код доступен на GitHub .