¿Cómo puedo obtener un java.io.InputStream de un java.lang.String?

Tengo unString que quiero usar comoInputStream. En Java 1.0, podría usarjava.io.StringBufferInputStream, pero eso ha sido@Deprecrated (con razón: no puede especificar la codificación del juego de caracteres):

Esta clase no convierte correctamente los caracteres en bytes. A partir de JDK 1.1, la forma preferida de crear una secuencia desde una cadena es a través deStringReader clase

Puedes crear unajava.io.Reader conjava.io.StringReader, pero no hay adaptadores para tomar unaReader y crea unaInputStream.

Encontré unaancient bug pidiendo un reemplazo adecuado, pero no existe tal cosa, por lo que puedo decir.

La solución alternativa sugerida a menudo es utilizarjava.lang.String.getBytes() como entrada ajava.io.ByteArrayInputStream:

public InputStream createInputStream(String s, String charset)
    throws java.io.UnsupportedEncodingException {

    return new ByteArrayInputStream(s.getBytes(charset));
}

pero eso significa materializar toda laString en la memoria como una matriz de bytes, y anula el propósito de una secuencia. En la mayoría de los casos, esto no es un gran problema, pero estaba buscando algo que preservara la intención de una transmisión: que la menor cantidad posible de datos se (re) materialice en la memoria.

Respuestas a la pregunta(16)

Su respuesta a la pregunta