Alors que Java.io.RandomAccessFile
A une méthode close()
, Java.io.File
N'en a pas. Pourquoi donc? Le fichier est-il automatiquement fermé lors de la finalisation?
Merci!
Le javadoc de la classe File
décrit la classe comme suit:
Une représentation abstraite des chemins de fichiers et de répertoires.
File
n'est qu'une représentation d'un chemin d'accès, avec quelques méthodes concernant le système de fichiers (comme exists()
) et la gestion des répertoires, mais la transmission en continu est effectivement effectuée ailleurs. Les flux peuvent être ouverts et fermés, les fichiers ne peuvent pas.
(Mon opinion personnelle est qu'il est plutôt malheureux que Sun ait ensuite créé RandomAccessFile
, ce qui a causé beaucoup de confusion avec son nom incohérent.)
Java.io.File
ne représente pas un fichier ouvert, il représente un chemin dans le système de fichiers. Donc, avoir la méthode close
n'a pas de sens.
En fait, cette classe a été mal nommée par les auteurs de la bibliothèque, elle devrait s'appeler quelque chose comme Path
.
Le fichier d'accès essentiellement aléatoire encapsule les flux d'entrée et de sortie afin de gérer l'accès aléatoire. Vous n'ouvrez pas et ne fermez pas un fichier, vous ouvrez et fermez des flux en 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 c'est juste la représentation d'un chemin.
Vous devriez toujours envisager de fermer uniquement les lecteurs/écrivains et, en fait, les flux.