Как мне преобразовать строку в InputStream в Java? [Дубликат]

727

С учетом строки:

String exampleString = "example";

Как преобразовать его в InputStream?

Теги:
string
type-conversion
inputstream

3 ответа

1184
Лучший ответ

Как это:

InputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8));

Обратите внимание, что это предполагает, что вы хотите, чтобы InputStream представлял собой поток байтов, представляющий исходную строку, кодированную как UTF-8.

Для версий Java меньше 7 замените StandardCharsets.UTF_8 на "UTF-8".

  • 1
    Разве эта кодировка не теряется при выполнении: String -> bytes -> ByteArrayInputStream? При попытке, например, использовать «ü», байты будут иметь правильную букву, но ByteArrayInputStream потеряет правильное преобразование. Или я не прав?
  • 19
    StandardCharsets требует минимального уровня API 19.
Показать ещё 4 комментария
243

Я считаю, что использование Apache Commons IO облегчает мою жизнь.

String source = "This is the source of my input stream";
InputStream in = IOUtils.toInputStream(source, "UTF-8");

Вы можете обнаружить, что библиотека также предлагает множество других ярлыков для обычно выполняемых задач, которые вы можете использовать в своем проекте.

  • 4
    Они использовали новый ByteArrayInputStream (exampleString.getBytes ("UTF-8")). Поэтому будет оптимизирован способ использования InputStream stream = new ByteArrayInputStream (exampleString.getBytes ("UTF-8"));
  • 9
    @PankajKumar: JIT-компилятор Java более чем способен это встроить.
Показать ещё 3 комментария
33

Вы можете использовать StringReader и преобразовать считыватель во входной поток, используя решение в https://stackoverflow.com/questions/62241/how-to-convert-a-reader-to-inputstream-and-a-writer-to-outputstream.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню