Рубрики
Без рубрики

Строка Java в поток ввода

Как преобразовать строку в входной поток, используя обычную Java, Guava или Commons IO.

Автор оригинала: 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 .