Solo quiero convertir FileInputStream
a en an InputStream
, ¿cómo puedo hacer eso?
p.ej
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();
java
fileinputstream
ranjan
fuente
fuente
File
clase aInputStream
. Su edición sugiere que eso es lo que el autor está pidiendo (al menos en parte), y no es correcto.Respuestas:
Por lo general, primero leería el flujo de entrada y luego lo cerraría. Puede envolver FileInputStream en otro InputStream (o lector). Se cerrará automáticamente cuando cierre el lector / flujo de envoltura.
Si este es un método que devuelve un InputStream a la persona que llama, entonces es responsabilidad de la persona que llama cerrar la transmisión cuando termine con ella. Si lo cierra en su método, la persona que llama no podrá usarlo.
Para responder a algunos de sus comentarios ...
Para enviar el contenido de InputStream a un consumidor remoto, debe escribir el contenido de InputStream en un OutputStream y luego cerrar ambos flujos.
El consumidor remoto no sabe nada sobre los objetos de flujo que ha creado. Simplemente recibe el contenido en un InputStream que creará, leerá y cerrará.
fuente
fuente
fuente
FileInputStream es un inputStream.
Por supuesto, esto no hará lo que usted quiere que haga ; la corriente que regresa ya se ha cerrado. Simplemente devuelva FileInputStream y termine con él. El código de llamada debería cerrarlo.
fuente
fis
aunque no estoy seguro de devolver una secuencia cerrada.fis
- también cierrasis
return FileInputStream("c://filename");
en el método cuyo tipo de retorno esInputStream
Si envuelve una secuencia en otra, no cierra las secuencias intermedias, y muy importante: no las cierra antes de terminar de usar las secuencias externas. Porque también cerrarías el arroyo exterior.
fuente