Trabajo con el sistema de archivos en Java: desde lo básico hasta técnicas avanzadas
Trabajar con el sistema de archivos es una de las tareas fundamentales en programación. Java proporciona a los desarrolladores herramientas potentes y flexibles para gestionar archivos y directorios. En este artículo, analizaremos en detalle cómo trabajar con el sistema de archivos en Java, utilizando tanto el paquete clásico java.io como el moderno java.nio.file. Aprenderá a crear, leer, escribir archivos, gestionar directorios y manejar excepciones.
Fundamentos del trabajo con archivos en Java: la clase File
La clase java.io.File es la piedra angular del trabajo con el sistema de archivos en Java. Representa una representación abstracta de una ruta a un archivo o directorio. Es importante entender que File no almacena el contenido del archivo, sino que solo proporciona métodos para verificar propiedades y realizar operaciones.
Veamos las operaciones básicas con File:
import java.io.File;import java.io.IOException;
public class FileExample { public static void main(String[] args) { // Creación de un objeto File File file = new File("example.txt"); File directory = new File("myDirectory");
// Verificación de existencia System.out.println("El archivo existe: " + file.exists()); System.out.println("La carpeta existe: " + directory.exists());
// Creación de un nuevo archivo try { if (file.createNewFile()) { System.out.println("Archivo creado: " + file.getName()); } else { System.out.println("El archivo ya existe"); } } catch (IOException e) { System.err.println("Error al crear el archivo: " + e.getMessage()); }
// Creación de un directorio if (directory.mkdir()) { System.out.println("Carpeta creada: " + directory.getName()); }
// Obtención de información del archivo System.out.println("Ruta absoluta: " + file.getAbsolutePath()); System.out.println("Tamaño del archivo: " + file.length() + " bytes"); System.out.println("Legible: " + file.canRead()); System.out.println("Escribible: " + file.canWrite());
// Eliminación del archivo if (file.delete()) { System.out.println("Archivo eliminado"); } }}La clase File también permite trabajar con listas de archivos en un directorio:
File currentDir = new File(".");String[] contents = currentDir.list();for (String item : contents) { System.out.println(item);}Lectura y escritura de archivos: flujos de entrada/salida
Para trabajar directamente con el contenido de los archivos, Java utiliza flujos de entrada/salida (I/O streams). Las clases principales para trabajar con archivos de texto son FileReader/FileWriter y BufferedReader/BufferedWriter.
Lectura de un archivo línea por línea
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;
public class ReadFileExample { public static void main(String[] args) { String fileName = "input.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.err.println("Error de lectura del archivo: " + e.getMessage()); } }}Observe la construcción try-with-resources. Cierra automáticamente el flujo, lo que evita la fuga de recursos.
Escritura en un archivo
import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;
public class WriteFileExample { public static void main(String[] args) { String fil