6.5 Manejo de ficheros y carpetas
1. La clase File¶
La clase File es una representación abstracta de ficheros y carpetas. Cuando creamos en Java un objeto de la clase File en representación de un fichero o carpeta concretos, no creamos el fichero al que se representa; es decir, el objeto File representa al archivo o carpeta de disco, pero no es el archivo o carpeta de disco.
La clase File dispone de métodos que permiten realizar determinadas operaciones sobre los ficheros. Podríamos, por ejemplo, crear un objeto de tipo File que represente a c:\datos\libros.txt (o /home/abc/datos/libros.txt) y, a través de ese objeto File, realizar consultas relativas al fichero libros.txt, como su tamaño, atributos, etc; o realizar operaciones sobre él: borrarlo, renombrarlo, …
2. Constructores¶
La clase File tiene varios constructores, que permiten referirse, de varias formas, al archivo que queremos representar:
| Método | Descripción |
|---|---|
public File (String ruta) |
Crea el objeto File a partir de la ruta indicada. Si se trata de un archivo tendrá que indicar la ruta y el nombre. |
public File (String ruta, String nombre) |
Permite indicar de forma separada la ruta del archivo y su nombre. |
public File (File ruta, String nombre) |
Permite indicar de forma separada la ruta del archivo y su nombre. En este caso la ruta está representada por otro objeto File. |
public File (URI uri) |
Crea el objeto File a partir de un objeto URI (Uniform Resource Identifier). Un URI permite representar un elemento siguiendo una sintaxis concreta, un estándar. |
3. Métodos¶
Aquí exponemos algunos métodos interesantes. Hay otros que puedes consultar en la documentación de Java.
| Relacionados con el nombre del fichero | |
|---|---|
String getName() |
Devuelve el nombre del fichero o directorio al que representa el objeto (solo el nombre, sin la ruta). |
String getPath() |
Devuelve la ruta del fichero o directorio. La ruta obtenida es dependiente del sistema; es decir, contendrá el carácter de separación de directorios que esté establecido por defecto. Este separador está definido en public static final String separator. |
String getAbsolutePath() |
Devuelve la ruta absoluta del fichero o directorio. |
String getParent() |
Devuelve la ruta del directorio en que se encuentra el fichero o directorio representado. Devuelve null si no hay directorio padre. |
| Para hacer comprobaciones | |
|---|---|
boolean exists()boolean canWrite()boolean canRead() boolean isFile()boolean isDirectory() |
Permite averiguar si el fichero existe. Permite averiguar si se puede escribir en el. Permite averiguar si se puede leer de él. Permite averiguar si se trata de un fichero o Permite averiguar dsi se trata de un directorio. |
| Obtener información de un fichero | |
|---|---|
long length |
Devuelve el tamaño en bytes del archivo. El resultado es indefinido si se consulta sobre un directorio o una unidad. |
long lastModified |
Devuelve la fecha de la última modificación del archivo. Devuelve el número de milisegundos transcurridos desde el 1 de enero de 1970 |
| Para trabajar con directorios | |
|---|---|
boolean mkdir() |
Crea el directorio al cual representa el objeto File. |
boolean mkdirs() |
Crea el directorio al cual representa el objeto File, incluyendo todos aquellos que sean necesarios y no existan. |
String[] list() |
Devuelve un array de Strings con los nombres de los ficheros y directorios que contiene el directorio al que representa el objeto File. |
String[] list(FileNameFilter filtro) |
Devuelve un array de Strings con los nombres de los ficheros y directorios que contiene el directorio al que representa el objeto File y que cumplen con determinado filtro. |
public File[] listFiles() |
Devuelve un array de objetos File que representan a los archivos y carpetas contenidos en el directorio al que se refiere el objeto File. |
| Para hacer cambios | |
|---|---|
boolean renameTo(File nuevoNombre) |
Permite renombrar un archivo. Hay que tener en cuenta que la operación puede fracasar por muchas razones, y que será dependiente del sistema (por ejemplo: que no se pueda mover el fichero de un lugar a otro, que ya exista un fichero que coincide con el nuevo, etc). El método devuelve true solo si la operación se ha realizado con éxito. Existe un método move en la clase Files para mover archivos de una forma independiente del sistema. |
boolean delete() |
Elimina el archivo o la carpeta a la que representa el objeto File. Si se trata de una carpeta tendrá que estar vacía. Devuelve true si la operación tiene éxito. |
boolean createNewFile() |
Crea un archivo vacío. Devuelve true si la operación se realiza con éxito. |
File createTempFile(String prefijo, String sufijo) |
Crea un archivo vacío en la carpeta de archivos temporales. El nombre llevará el prefijo y sufijo indicados. Devuelve el objeto File que representa al nuevo archivo. |