Si bien java.io.RandomAccessFile
tiene un close()
método, java.io.File
no lo tiene. ¿Porqué es eso? ¿El archivo se cierra automáticamente al finalizar o algo así?
¡Gracias!
Si bien java.io.RandomAccessFile
tiene un close()
método, java.io.File
no lo tiene. ¿Porqué es eso? ¿El archivo se cierra automáticamente al finalizar o algo así?
¡Gracias!
Respuestas:
El javadoc de la File
clase describe la clase como:
Una representación abstracta de nombres de rutas de archivos y directorios.
File
es solo una representación de un nombre de ruta, con algunos métodos relacionados con el sistema de archivos (como exists()
) y el manejo de directorios, pero la entrada y salida de transmisión real se realiza en otro lugar. Las secuencias se pueden abrir y cerrar, los archivos no.
(Mi opinión personal es que es bastante desafortunado que Sun luego creara RandomAccessFile
, causando mucha confusión con su nombre inconsistente).
java.io.File
no representa un archivo abierto , representa una ruta en el sistema de archivos. Por lo tanto, tener un close
método no tiene sentido.
En realidad, los autores de la biblioteca nombraron erróneamente esta clase, debería llamarse algo así como Path
.
Path
completo.
Esencialmente, el archivo de acceso aleatorio envuelve los flujos de entrada y salida para administrar el acceso aleatorio. No abre y cierra un archivo, abre y cierra las secuencias de un archivo.
Un BufferedReader puede abrirse y cerrarse, pero un archivo nunca se abre, solo representa una ruta en el sistema de archivos.
Supongamos que tienes
File f = new File("SomeFile");
f.length();
No es necesario cerrar la File
s, porque es solo la representación de una ruta.
Siempre debe considerar cerrar solo los lectores / escritores y, de hecho, los flujos.