Je crée une méthode Java qui accepte un seul InputStream
en tant qu'argument. Pour la commodité de travailler avec un flux à base de caractères, j'enveloppe la condition InputStream
au début de la mise en œuvre de la méthode comme suit:Comment éviter de fermer un InputStream passé à ma méthode que j'emballe dans les flux Reader?
public void doStuff(InputStream inStream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
...
}
Depuis le InputStream
(inStream
) est passé à ma méthode, je ne vouloir le fermer ... car je pense que cela devrait être la responsabilité du client appelant ma méthode (cette hypothèse est-elle correcte?). Cependant, je pense que je devrais fermer le BufferedReader
que j'ai créé; mais en faisant cela, je crois qu'il fermera automatiquement tous les autres flux composés, y compris le inStream
.
Quelqu'un voit-il un moyen pour moi de fermer les BufferedReader
et InputStreamReader
que j'ai créés sans fermer le InputStream
passé à ma méthode? Peut-être qu'il y a un moyen de faire une copie du InputStream
fourni avant de l'emballer? Merci
Vous savez que le flux non compressé sera pratiquement inutile? –
Vous devez fournir un 'Charset' spécifique lors de la création d'un' InputStreamReader' plutôt que de l'ignorer et de laisser la plateforme par défaut être utilisée. – ColinD
Tom, pourriez-vous clarifier ce que vous voulez dire par "le flux déballé sera à peu près inutile"? – user389591