Comment convertir FileInputStream en InputStream?

Je veux juste convertir un FileInputStream en un InputStream , comment puis-je le faire?

par exemple

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

En général, vous lisez d’abord le stream d’entrée, puis le fermez. Vous pouvez envelopper le FileInputStream dans un autre InputStream (ou Reader). Il sera automatiquement fermé lorsque vous fermez le stream / lecteur enveloppant.

S’il s’agit d’une méthode renvoyant un InputStream à l’appelant, il incombe à l’appelant de fermer le stream lorsqu’il en a terminé. Si vous le fermez dans votre méthode, l’appelant ne pourra pas l’utiliser.

Pour répondre à certains de vos commentaires …

Pour envoyer le contenu InputStream à un consommateur distant, vous devez écrire le contenu de InputStream dans un object OutputStream, puis fermer les deux stream.

Le consommateur distant ne sait rien des objects de stream que vous avez créés. Il reçoit juste le contenu, dans un InputStream qu’il va créer, lire et fermer.

 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; 
 InputStream is = new FileInputStream("c://filename"); return is; 

FileInputStream est un inputStream.

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

Bien sûr, cela ne fera pas ce que vous voulez qu’il fasse ; le stream que vous retournez a déjà été fermé. Il suffit de retourner le fichier FileInputStream et de le terminer. Le code d’appel doit le fermer.

Si vous enroulez un stream dans un autre, vous ne fermez pas les stream intermédiaires, et c’est très important: vous ne les fermez pas avant d’avoir fini d’utiliser les stream externes. Parce que vous fermeriez aussi le stream externe.