¿Por qué java.io.File no tiene un método close ()?
123
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í?
Si observa la API de Java, podrá obtener la respuesta de inmediato.
gigadot
43
He aprendido que las personas son más útiles que la excelente especificación de Java.
Albus Dumbledore
6
b / c no se puede abrir :)
bestsss
6
Porque no abre nada. Y la gente es considerablemente menos confiable que la especificación oficial de Java.
Marqués de Lorne
Respuestas:
141
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).
Pero, ¿qué pasa con todos los métodos de listado de directorios? Deberían haberse separado del Pathcompleto.
biziclop
3
De acuerdo, pero en cualquier caso, File o RandomAccessFile tienen un nombre incorrecto. Algo como RandomAccessFileStream podría ser mejor, pero ya es demasiado tarde para muchos años.
maaartinus
7
"En realidad, esta clase fue mal nombrada por los autores de la biblioteca, debería llamarse algo así como Path" -> Te escucharon. En el paquete nio (New I / O), la clase similar ahora se llama Path. docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html
minutos
6
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.
Si. Nunca miré mucho en java.io.RandomAccessFile. Siempre asumí que anulaba java.io.File pero no es así. El archivo representa una ruta. RandomAccessFile es un objeto que puede realizar E / S de disco como lo hacen los flujos, aunque con una implementación muy diferente, para permitir un acceso aleatorio en lugar de un flujo continuo.
Steve Cohen
6
Un BufferedReader puede abrirse y cerrarse, pero un archivo nunca se abre, solo representa una ruta en el sistema de archivos.
Respuestas:
El javadoc de la
File
clase describe la clase como:File
es solo una representación de un nombre de ruta, con algunos métodos relacionados con el sistema de archivos (comoexists()
) 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).fuente
java.io.File
no representa un archivo abierto , representa una ruta en el sistema de archivos. Por lo tanto, tener unclose
método no tiene sentido.En realidad, los autores de la biblioteca nombraron erróneamente esta clase, debería llamarse algo así como
Path
.fuente
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.
fuente
Un BufferedReader puede abrirse y cerrarse, pero un archivo nunca se abre, solo representa una ruta en el sistema de archivos.
fuente
Supongamos que tienes
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.
fuente