Estoy creando un método Java que acepta un único InputStream
como argumento. Para la comodidad de trabajar con una corriente basada en caracteres, envuelvo el InputStream
proporcionado en el inicio de la implementación del método de la siguiente manera:¿Cómo evito cerrar un InputStream pasado a mi método que envuelvo en las transmisiones de Reader?
public void doStuff(InputStream inStream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
...
}
Desde el InputStream
(inStream
) se pasa a mi método, no lo creo quiero cerrarlo ... ya que creo que esa debería ser la responsabilidad del cliente que llama a mi método (¿es correcta esta suposición?). Sin embargo, creo que debería cerrar el BufferedReader
que creé; pero al hacerlo, creo que cerrará automáticamente todas las otras secuencias compuestas, incluido el inStream
.
¿Alguien ve una manera de cerrar el BufferedReader
y el InputStreamReader
que creé sin cerrar el InputStream
pasado a mi método? Tal vez hay una manera de hacer una copia de la proporcionada InputStream
antes de envolverlo? Gracias
¿Sabía que la transmisión no envuelta será prácticamente inútil? –
Debe suministrar un 'Charset' específico al crear un' InputStreamReader' en lugar de ignorarlo y dejar que se use la plataforma predeterminada. – ColinD
Tom, ¿podrías aclarar a qué te refieres con "la transmisión desenvuelta será bastante inútil"? – user389591