Bien qu'il java.io.RandomAccessFile
n'y ait pas de close()
méthode java.io.File
. Pourquoi donc? Le dossier est-il automatiquement fermé lors de la finalisation ou quelque chose?
Merci!
Bien qu'il java.io.RandomAccessFile
n'y ait pas de close()
méthode java.io.File
. Pourquoi donc? Le dossier est-il automatiquement fermé lors de la finalisation ou quelque chose?
Merci!
Réponses:
Le javadoc de la File
classe décrit la classe comme:
Une représentation abstraite des chemins de fichiers et de répertoires.
File
est seulement une représentation d'un chemin, avec quelques méthodes concernant le système de fichiers (comme exists()
) et la gestion des répertoires, mais les entrées et sorties de flux réelles se font ailleurs. Les flux peuvent être ouverts et fermés, les fichiers ne le peuvent pas.
(Mon opinion personnelle est qu'il est plutôt malheureux que Sun ait ensuite créé RandomAccessFile
, causant beaucoup de confusion avec sa dénomination incohérente.)
java.io.File
ne représente pas un fichier ouvert , il représente un chemin dans le système de fichiers. Par conséquent, avoirclose
méthode n'a pas de sens.
En fait, cette classe a été mal nommée par les auteurs de la bibliothèque, elle devrait être appelée quelque chose comme Path
.
Path
complètement.
Essentiellement, le fichier à accès aléatoire encapsule les flux d'entrée et de sortie afin de gérer l'accès aléatoire. Vous n'ouvrez et ne fermez pas un fichier, vous ouvrez et fermez les flux d'un fichier.
Un BufferedReader peut être ouvert et fermé mais un fichier n'est jamais ouvert, il représente simplement un chemin dans le système de fichiers.
Dis suppose que tu as
File f = new File("SomeFile");
f.length();
Vous n'avez pas besoin de fermer le File
s, car ce n'est que la représentation d'un chemin.
Vous devriez toujours envisager de fermer uniquement les lecteurs / écrivains et en fait les flux.