У меня есть String, который я хочу использовать как InputStream. В Java 1.0 вы можете использовать java.io.StringBufferInputStream, но это было @Deprecrated (с полным основанием - вы не можете указать кодировку набора символов ):
Этот класс неправильно конвертирует символов в байты. Начиная с JDK 1.1, предпочтительный способ создания потока из строки через
StringReaderкласс.
Вы можете создать java.io.Reader с java.io.StringReader, но нет адаптеров для принятия Reader и создания InputStream.
Я нашел древнюю ошибку с просьбой о подходящей замене, но такой вещи не существует - насколько я могу судить.
Рекомендуемым обходным решением является использование java.lang.String.getBytes() в качестве входа в  java.io.ByteArrayInputStream:
public InputStream createInputStream(String s, String charset)
    throws java.io.UnsupportedEncodingException {
    return new ByteArrayInputStream(s.getBytes(charset));
}
 но это означает материализацию всего String в памяти в виде массива байтов и побеждает цель потока. В большинстве случаев это не имеет большого значения, но я искал что-то, что бы сохранить намерение потока - что как можно меньше данных (re) материализовалось в памяти.
