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 .