Trabajo con el sistema de archivos en Java: guía práctica
Trabajar con el sistema de archivos es una de las tareas fundamentales en programación. En Java, existe un conjunto de herramientas potente y flexible para ello, desde el clásico paquete java.io hasta el moderno java.nio.file. En este artículo, analizaremos con ejemplos prácticos cómo crear, leer, escribir y eliminar archivos, así como trabajar con directorios.
1. Clase File: base del trabajo con archivos
La clase java.io.File es la clase básica para representar una ruta a un archivo o directorio. Permite verificar la existencia, crear, renombrar y eliminar objetos del sistema de archivos.
Creación y verificación de existencia de un archivo
import java.io.File;import java.io.IOException;
public class FileExample { public static void main(String[] args) { File file = new File("example.txt");
if (file.exists()) { System.out.println("El archivo existe: " + file.getAbsolutePath()); } else { try { if (file.createNewFile()) { System.out.println("Archivo creado: " + file.getName()); } } catch (IOException e) { System.err.println("Error al crear el archivo: " + e.getMessage()); } }
// Verificación de propiedades System.out.println("Legible: " + file.canRead()); System.out.println("Escribible: " + file.canWrite()); System.out.println("Tamaño: " + file.length() + " bytes"); }}Trabajo con directorios
File dir = new File("my_directory");
if (dir.mkdir()) { System.out.println("Directorio creado");}
// Creación de directorios anidadosFile nestedDir = new File("parent/child/grandchild");if (nestedDir.mkdirs()) { System.out.println("Directorios anidados creados");}
// Obtención de lista de archivosString[] files = dir.list();for (String fileName : files) { System.out.println(fileName);}2. Lectura y escritura de archivos mediante FileReader/FileWriter
Para trabajar con archivos de texto, es conveniente usar las clases FileReader y FileWriter. Funcionan a nivel de caracteres y admiten codificaciones.
Escritura en un archivo
import java.io.FileWriter;import java.io.IOException;
public class WriteExample { public static void main(String[] args) { try (FileWriter writer = new FileWriter("output.txt", true)) { writer.write("¡Hola, mundo!"); writer.write("Esta es la segunda línea."); writer.flush(); System.out.println("Datos escritos exitosamente"); } catch (IOException e) { System.err.println("Error de escritura: " + e.getMessage()); } }}Tenga en cuenta: el segundo parámetro true en el constructor de FileWriter activa el modo de añadir (append). Si se omite, el archivo se sobrescribirá.
Lectura de un archivo
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;
public class ReadExample { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new FileReader("output.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.err.println("Error de lectura: " + e.getMessage()); } }}El uso de BufferedReader acelera significativamente la lectura de archivos grandes gracias al almacenamiento en búfer.
3. Enfoque moderno: java.nio.file (NIO.2)
A partir de Java 7, apareció el paquete java.nio.file, que proporciona herramientas más convenientes y eficientes para