read open application java fileinputstream

java - open - Archivo a InputStream



properties resources java (5)

FileInputStream es un inputStream.

FileInputStream fis = new FileInputStream("c://filename"); InputStream is = fis; fis.close(); return is;

Por supuesto, esto no hará lo que quieras que haga ; la transmisión que devuelve ya se ha cerrado. Simplemente devuelva FileInputStream y termine con esto. El código de llamada debería cerrarlo.

Solo quiero convertir un File a un InputStream , ¿cómo puedo hacer eso?

p.ej

FileInputStream fis = new FileInputStream("c://filename"); InputStream is = ?; fis.close();

¿Cómo convertir FileInputStream a InputStream , para poder cerrar fis o hay alguna otra forma de convertir el File a InputStream ?


Normalmente, primero leería de la secuencia de entrada y luego lo cerraría. Puede envolver FileInputStream en otro InputStream (o Reader). Se cerrará automáticamente cuando cierre el flujo / lector de envoltura.

Si este es un método que devuelve un InputStream a la persona que llama, entonces es responsabilidad del que llama cerrar la transmisión cuando haya terminado. Si lo cierra en su método, la persona que llama no podrá usarlo.

Para responder algunos de tus comentarios ...

Para enviar el contenido InputStream a un consumidor remoto, debe escribir el contenido de InputStream en OutputStream y luego cerrar ambas secuencias.

El consumidor remoto no sabe nada sobre los objetos de transmisión que ha creado. Simplemente recibe el contenido, en un InputStream que creará, leerá y cerrará.


Si envuelve una secuencia en otra, no cierra las secuencias intermedias, y es muy importante: no las cierra antes de terminar de usar las secuencias externas. Porque también cerrarías la corriente externa.


InputStream is = new FileInputStream("c://filename"); return is;


InputStream is; try { is = new FileInputStream("c://filename"); is.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return is;