Tarea 4: Recorrido e Inspección de Metadatos de un Directorio
Explicación del Ejercicio
Esta tarea combina la inspección individual de propiedades con el recorrido completo de un directorio. Primero se muestra la información de la carpeta contenedora y posteriormente se itera sobre sus elementos para extraer sus metadatos.
Conceptos y métodos clave:
-
Metadatos del directorio raíz: Se extraen las propiedades del directorio actual (
".") como el nombre, rutas relativa y absoluta, permisos de lectura/escritura (canRead(),canWrite()), tamaño en bytes y verificaciones de tipo (isFile(),isDirectory()). -
Bucle de recorrido de elementos: Mediante
carpeta.listFiles()se obtiene la lista de elementos contenidos y se recorre con un buclefor. - Metadatos de subelementos: En cada iteración se muestra de forma individualizada la metainformación de cada archivo o subcarpeta encontrada.
Código Fuente y Salida
Clase3.java
package ClaseFile;
import java.io.File;
/**
* @author Eva Gallardo Romero
* @date 16 de sep de 2026
* Programa para mostrar la siguiente información de una carpeta:
* - Nombre
* - Ruta (relativa y absoluta)
* - Si existe posibilidad de leer o escribir
* - Tamaño
* - Si es un directorio o un fichero
* - Nombre del directorio padre
* es decir la metadata
*/
public class Clase3 {
public static void main(String[] args) {
// objeto File que representa el directorio actual
File carpeta = new File(".");
System.out.println("------- Información sobre la carpeta --------");
System.out.println(" · Nombre: " + carpeta.getName());
System.out.println(" · Ruta relativa: " + carpeta.getPath());
System.out.println(" · Ruta absoluta: " + carpeta.getAbsolutePath());
System.out.println(" · Posibilidad de leer: " + carpeta.canRead());
System.out.println(" · Posibilidad de escribir: " + carpeta.canWrite());
System.out.println(" · Tamaño: " + carpeta.length() + " bytes");
System.out.println(" · Es un fichero: " + carpeta.isFile());
System.out.println(" · Es un directorio: " + carpeta.isDirectory());
System.out.println(" · Directorio padre: " + carpeta.getAbsoluteFile().getParentFile().getName());
System.out.println();
// obtengo la lista de elementos que hay en el directorio
File[] contenidos = carpeta.listFiles();
// recorro el contenido que he obtenido del directorio y lo printeo
for (int i = 0; i < contenidos.length; i++) {
File elemento = contenidos[i];
System.out.println("------- Información sobre el elemento --------");
System.out.println(" · Nombre: " + elemento.getName());
System.out.println(" · Ruta relativa: " + elemento.getPath());
System.out.println(" · Ruta absoluta: " + elemento.getAbsolutePath());
System.out.println(" · Posibilidad de leer: " + elemento.canRead());
System.out.println(" · Posibilidad de escribir: " + elemento.canWrite());
System.out.println(" · Tamaño: " + elemento.length() + " bytes");
System.out.println(" · Es un fichero: " + elemento.isFile());
System.out.println(" · Es un directorio: " + elemento.isDirectory());
//Saco la ruta absoluta en forma de objeto File, busco el padre del fichero y extraigo el nombre
System.out.println(" · Directorio padre: " + elemento.getAbsoluteFile().getParentFile().getName());
System.out.println(); // Línea en blanco para separar cada elemento
}
}
}
Resultado Mostrado por Terminal
Salida de Consola
------- Información sobre la carpeta --------
· Nombre: .
· Ruta relativa: .
· Ruta absoluta: C:\PROYECTOS\AccesoDatos\.
· Posibilidad de leer: true
· Posibilidad de escribir: true
· Tamaño: 4096 bytes
· Es un fichero: false
· Es un directorio: true
· Directorio padre: AccesoDatos
------- Información sobre el elemento --------
· Nombre: src
· Ruta relativa: .\src
· Ruta absoluta: C:\PROYECTOS\AccesoDatos\src
· Posibilidad de leer: true
· Posibilidad de escribir: true
· Tamaño: 0 bytes
· Es un fichero: false
· Es un directorio: true
· Directorio padre: AccesoDatos
------- Información sobre el elemento --------
· Nombre: file.txt
· Ruta relativa: .\file.txt
· Ruta absoluta: C:\PROYECTOS\AccesoDatos\file.txt
· Posibilidad de leer: true
· Posibilidad de escribir: true
· Tamaño: 120 bytes
· Es un fichero: true
· Es un directorio: false
· Directorio padre: AccesoDatos