Sto creando un metodo Java che accetta un singolo InputStream
come argomento. Per la comodità di lavorare con un flusso di caratteri-based, avvolgo il previsto InputStream
all'inizio della implementazione del metodo come segue:Come evitare di chiudere un InputStream passato al mio metodo che avvolgo nei flussi Reader?
public void doStuff(InputStream inStream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
...
}
Dal momento che l'InputStream
(inStream
) è passato al mio metodo, non lo faccio voglio chiuderlo ... poiché penso che dovrebbe essere la responsabilità del client che chiama il mio metodo (questa supposizione è corretta?). Tuttavia, penso che dovrei chiudere lo BufferedReader
che ho creato; ma nel farlo, credo che chiuderà automaticamente tutti gli altri stream composti incluso lo inStream
.
Qualcuno vede un modo per me di chiudere il BufferedReader
e InputStreamReader
che ho creato mentre non chiudendo il InputStream
passato al mio metodo? Forse c'è un modo per fare una copia del InputStream
fornito prima che lo avvolgo? Grazie
Sei consapevole del fatto che lo streaming non confezionato sarà praticamente inutile? –
È necessario fornire un 'set di caratteri' specifico quando si crea un 'InputStreamReader' piuttosto che ignorarlo e lasciare che venga utilizzata la piattaforma predefinita. – ColinD
Tom, vorresti chiarire cosa intendi con "il flusso non confezionato sarà praticamente inutile"? – user389591