UP | HOME

Operaciones básicas de I/O

Table of Contents

Acceso a archivos

Usaremos la interfaz Path del paquete java.nio.file para localizar un archivo en el sistema de archivos. Este Path representa una ruta a un archivo.

La manera más sencilla de crear un Path sería usar el factory method of de la interfaz Path:

Path rutaRelativa = Path.of("datos.txt");
Path rutaAbsoluta = Path.of("/home/usuario/documentos/datos.txt");

Operaciones fundamentales

La clase Files del paquete java.nio.file proporciona los métodos necesarios para interactuar de forma real con el sistema de archivos.

Gestión de Excepciones

Casi todos los métodos de la clase Files realizan acceso directo a disco y, por tanto, pueden lanzar la excepción comprobada java.io.IOException. Esto nos obliga a capturar la excepción mediante bloques try-catch o declararla en la firma del método con throws IOException.

Comprobar existencia y propiedades

Antes de operar sobre un archivo o directorio, es fundamental comprobar su estado.

import java.nio.file.Files;
import java.nio.file.Path;

Path ruta = Path.of("config/app.conf");

// Comprobaciones de existencia
boolean existe = Files.exists(ruta);
boolean noExiste = Files.notExists(ruta);

if (existe) {
    // Identificar el tipo de elemento
    boolean esFichero = Files.isRegularFile(ruta);
    boolean esDirectorio = Files.isDirectory(ruta);

    // Comprobar permisos
    boolean sePuedeLeer = Files.isReadable(ruta);
    boolean sePuedeEscribir = Files.isWritable(ruta);

    System.out.println("Es fichero regular: " + esFichero);
    System.out.println("Permiso de lectura: " + sePuedeLeer);
}

Crear archivos y directorios

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

Path carpeta = Path.of("datos");
Path archivo = Path.of("datos/notas.txt");

try {
    // Crear un directorio si no existe
    if (Files.notExists(carpeta)) {
        // Falla si las carpetas padre no existen
        Files.createDirectory(carpeta);
    }

    // Crear un fichero vacío si no existe
    if (Files.notExists(archivo)) {
        Files.createFile(archivo);
        System.out.println("Fichero creado correctamente.");
    }
} catch (IOException e) {
    System.err.println("Ocurrió un error al crear los elementos: " + e.getMessage());
}

Si necesitas crear una estructura de carpetas anidadas donde los directorios intermedios aún no existen (por ejemplo: datos/2026/informes), debes utilizar el método Files.createDirectories(ruta) en lugar de createDirectory.

Copiar, mover y borrar de archivos

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;

Path origen = Path.of("notas.txt");
Path destinoCopia = Path.of("backup_notas.txt");
Path destinoMover = Path.of("historico/notas_v1.txt");

try {
    // Copiar sobreescribiendo si el destino ya existe
    Files.copy(origen, destinoCopia, StandardCopyOption.REPLACE_EXISTING);

    // Mover o renombrar
    Files.move(origen, destinoMover, StandardCopyOption.REPLACE_EXISTING);

    // Borrado de archivos
    // Lanza NoSuchFileException si el archivo no existe
    Files.delete(destinoCopia);

    // Forma alternativa y más segura de borrar:
    // Retorna boolean, no lanza excepción si no existe
    boolean borrado = Files.deleteIfExists(Path.of("temp.tmp"));

} catch (IOException e) {
    System.err.println("Error durante la operación de archivos: " + e.getMessage());
}

Author: Román Ginés Martínez Ferrández

Created: 2026-08-31 lun 16:26

Validate