Vous Ne fais pas ça. il faut fermer le lecteur/écrivain enveloppé.
Si vous avez jeté un coup d'œil à la documentation ( [Reader.close()
](https://docs.oracle.com/javase/7/docs/api/java/io/Reader.html#close()) , [Writer.close()
](https://docs.oracle.com/javase/7/docs/api/java/io/Writer.html#close()) ), vous verrez que dans Reader.close()
il est dit :
Ferme le flux et libère toutes les ressources système qui lui sont associées.
qui dit juste qu'il "libère toutes les ressources du système". associé à avec elle". Même si cela ne confirme pas cela vous donne un coup de pouce pour commencer à regarder plus profondément. et si vous allez à Writer.close()
il est seulement indiqué qu'il se ferme tout seul.
Dans ce cas, on parle de OpenJDK pour jeter un coup d'oeil au code source.
À BufferedWriter Ligne 265 vous verrez out.close()
. Donc il ne se ferme pas tout seul C'est quelque chose d'autre. Si vous recherchez dans la classe les occurrences de " out
"vous remarquerez que dans le constructeur, à l'adresse Ligne 87 que out
est l'auteur que la classe enveloppe où il appelle un autre constructeur et ensuite assigne out
à son propre paramètre out
variable
Alors Et les autres ? Vous pouvez voir un code similaire à Ligne BufferedReader 514 , BufferedInputStream Ligne 468 et InputStreamReader Ligne 199 . Je ne connais pas les autres, mais cela devrait suffire pour supposer qu'ils le font.
4 votes
Tu sais, tu peux juste lire la source pour ce genre d'info. Tout est là, dans src.zip, dans le répertoire d'installation du JDK, ou vous pouvez le lire en ligne, par exemple à l'adresse suivante docjar.com/html/api/java/io/BufferedReader.java.html
57 votes
Dire à quelqu'un de lire la source est pire que de lui dire "RTFM !". Et que se passe-t-il si la source a un bug ; implicitement, nous voulons savoir ce que le correct comportement est ?
1 votes
Eh bien ... de ce point de vue : pointer vers les spécifications de l'API n'est pas mieux alors. Si la source n'a pas un bogue qui fait qu'elle ne se comporte pas comme il est spécifié dans les docs, vous ne pouvez pas vous fier aux docs. Il n'y a donc pas de bonne façon de répondre à une telle question.
0 votes
@Atmocreations La prochaine version de maintenance peut allègrement corriger un bug sur lequel vous comptez si vous regardez simplement la source. Vous avez vraiment besoin de savoir quel est le comportement documenté. Rien de mal à regarder la source, bien sûr, mais vous ne pouvez pas supposer que la source ne changera pas. Changer le comportement documenté est généralement un beaucoup plus important que de corriger un bug.