java - inputStream关闭了,还有必要关闭InputStreamReader和BufferedReader吗?
PHP中文网
PHP中文网 2017-04-18 09:30:18
0
3
1194
PHP中文网
PHP中文网

认证0级讲师

répondre à tous(3)
Ty80

Appelez simplement le close() le plus externe directement


mise à jour :

http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close--

Ferme le flux et libère toutes les ressources système qui lui sont associées

http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close--

Ferme le flux et libère toutes les ressources système qui lui sont associées

C'est une chaîne. Vous fermez celle de l'extérieur, et celle de l'extérieur ferme celle de l'intérieur, et celle de l'intérieur ferme celle de l'intérieur


Bien sûr, si vous insistez sur le fait que l'arrêt peut échouer, vous devez finalement le faire, je n'y peux rien

.
阿神

Si la question est : BufferedReader est fermé, est-il nécessaire de fermer InputStreamReader et InputStream ? , alors ce problème est normal...

Le flux et le lecteur du package io de Java utilisent tous deux le modèle décorateur. Il vous suffit d'appeler la méthode close du décorateur le plus externe, et il fermera également le flux ou le lecteur qu'il décore.

Si cela ne fonctionne pas, ouvrez le code source de BufferedReader et regardez la méthode close Vous constaterez qu'elle ferme le lecteur qu'elle décore dans cette méthode

.

Peu importe la difficulté, je vous recommande l'article suivant, qui pourra peut-être résoudre vos doutes "Java IO : Streams et l'application du modèle décorateur dessus"

刘奇

Il faut tous les fermer, un par un dans l'ordre, de préférence en fin

finally{
    try{
        br.close();
        isr.close();
        is.close();
    }catch(Exception e){
        ......
    }
}

Le dernier niveau créé en premier, le premier niveau créé en dernier

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal