web-dev-qa-db-fra.com

Dois-je fermer un InputStream en Java?

Mon code est:

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

Dans les documents:

La méthode close de InputStream ne fait rien.

Cela signifie-t-il que je n'ai pas besoin de fermer InputStream?

45
user710818

Vous devez fermer le flux d'entrée, car le flux renvoyé par la méthode que vous mentionnez est en fait FileInputStream ou une autre sous-classe de InputStream qui contient un handle pour un fichier. Si vous ne fermez pas ce flux, vous avez une fuite de ressources.

31
Boris Strandjev

Non, cela ne signifie pas que - parce que InputStream est une classe abstraite, et getResourceAsStream() renvoie une sous-classe concrète dont la méthode close() fait quelque chose - surtout libère un descripteur de fichier .

22