2012-03-03 16 views
37

Il mio codice è:Devo chiudere un InputStream in Java?

InputStream confFile=classLoader.getResourceAsStream("myconffile.properties"); 

In docs:

Il metodo close InputStream non fa nulla.

Significa che non ho bisogno di chiudere InputStream?

risposta

25

Si ha bisogno di chiudere il flusso di ingresso, perché il flusso restituito dal metodo si parla è in realtà FileInputStream o qualche altro sottoclasse di InputStream che contiene una maniglia per un file. Se non si chiude questo flusso si verifica una perdita di risorse.

+1

Non penso che sarà un FileInputStream nella maggior parte dei casi. –

+0

Dovrei indagare in questo, purtroppo non ho nessuna istanza di Java in questo momento. Tuttavia, sono d'accordo con te sul fatto che sia in possesso di un handle di file. –

+0

Il metodo finalize non chiude il flusso di risorse per te? –

19

No, non significa che - a causa InputStream è una classe astratta, e getResourceAsStream() restituisce una sottoclasse concreta cui close() metodo fa qualcosa - soprattutto gratuitamente un handle di file.

Problemi correlati