2011-01-20 15 views
89

Mientras que java.io.RandomAccessFile tiene un close() método java.io.File no. ¿Porqué es eso? ¿El archivo se cierra automáticamente en la finalización o algo así?¿Por qué java.io.File no tiene un método close()?

Gracias!

+3

Si observa la API de Java, podrá obtener la respuesta de inmediato. – gigadot

+25

He aprendido que las personas son más útiles que las especificaciones de Java por lo demás excelentes. –

+6

b/c no se puede abrir :) – bestsss

Respuesta

107

el Javadoc de la clase File describe la clase como:

una representación abstracta de las rutas de acceso de archivos y directorios.

File es sólo una representación de un nombre de ruta, con unos métodos relativos al sistema de archivos (como exists()) y manipuleo de directorio, pero de entrada de streaming real y la salida se hace en otros lugares. Los flujos se pueden abrir y cerrar, los archivos no.

(Mi opinión personal es que es bastante lamentable que Sun continuación, pasó a crear RandomAccessFile, causando mucha confusión con su denominación inconsistente.)

53

java.io.File no representa un archivo abierto , representa una ruta en el sistema de archivos. Por lo tanto, tener el método close no tiene sentido.

En realidad, esta clase fue mal llamada por los autores de la biblioteca, debería llamarse algo así como Path.

+0

Pero, ¿y todos los métodos de listado de directorios? Deberían haber sido separados de la 'Ruta' por completo. – biziclop

+3

De acuerdo, pero en cualquier caso, File o RandomAccessFile se nombran erróneamente. Algo como RandomAccessFileStream podría ser mejor, pero ahora es demasiado tarde. – maaartinus

+4

"En realidad, esta clase fue mal llamada por los autores de la biblioteca, debería llamarse algo así como Ruta" -> Te escucharon. En el paquete nio (New I/O), el classe similar ahora se denomina Path. http://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html – mins

6

archivo de acceso esencialmente aleatoria envuelve flujos de entrada y salida con el fin de gestionar el azar acceso. No abre y cierra un archivo, abre y cierra secuencias en un archivo.

+1

Sí. Nunca miré mucho en java.io.RandomAccessFile. Siempre asumí que anuló java.io.File pero no lo hace !. El archivo representa un camino. RandomAccessFile es un objeto que puede realizar E/S de disco como pueden hacerlo las secuencias, aunque con una implementación muy diferente, para permitir el acceso aleatorio en lugar del acceso por secuencias. –

4

Un BufferedReader se puede abrir y cerrar, pero nunca se abre un archivo, simplemente representa una ruta en el sistema de archivos.

2

Supongamos que tiene File f = new File ("SomeFile"); f.length(); No necesita cerrar los archivos, porque es la representación de la ruta. Siempre debe considerar cerrar solo los lectores/escritores y las secuencias de hecho.

Cuestiones relacionadas