Si bien java.io.RandomAccessFiletiene un close()método, java.io.Fileno lo tiene. ¿Porqué es eso? ¿El archivo se cierra automáticamente al finalizar o algo así?
¡Gracias!
Si bien java.io.RandomAccessFiletiene un close()método, java.io.Fileno lo tiene. ¿Porqué es eso? ¿El archivo se cierra automáticamente al finalizar o algo así?
¡Gracias!
Respuestas:
El javadoc de la Fileclase describe la clase como:
Una representación abstracta de nombres de rutas de archivos y directorios.
Filees 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.Fileno representa un archivo abierto , representa una ruta en el sistema de archivos. Por lo tanto, tener un closemétodo no tiene sentido.
En realidad, los autores de la biblioteca nombraron erróneamente esta clase, debería llamarse algo así como Path.
Pathcompleto.
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 Files, porque es solo la representación de una ruta.
Siempre debe considerar cerrar solo los lectores / escritores y, de hecho, los flujos.