Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Java Crear y escribir archivos

Crear y escribir en archivos en Java es una tarea fundamental para muchas aplicaciones. Java proporciona varias clases y métodos para manejar eficazmente las operaciones con archivos. Las clases más utilizadas para la creación y escritura de archivos son File, FileWriter, BufferedWriter, y Files.

Crear un archivo

Para crear un nuevo archivo, puedes utilizar la clase File. El método createNewFile() se utiliza para crear un nuevo archivo si aún no existe.

Ejemplo: Crear un archivo


import java.io.File;
import java.io.IOException;

public class CreateFileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        try {
            if (file.createNewFile()) {
                System.out.println("File created: " + file.getName());
            } else {
                System.out.println("File already exists.");
            }
        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

En este ejemplo, se crea un objeto File para example.txt. El método createNewFile() intenta crear el archivo y devuelve true si tiene éxito, o false si el archivo ya existe.

Escribir en un archivo

Java proporciona varias formas de escribir en un archivo. Las clases FileWriter y BufferedWriter se utilizan habitualmente para escribir datos de caracteres, mientras que los métodos de la clase Files pueden utilizarse tanto para datos de caracteres como binarios.

Ejemplo 1: Utilizar FileWriter


import java.io.FileWriter;
import java.io.IOException;

public class WriteFileExample {
    public static void main(String[] args) {
        try (FileWriter writer = new FileWriter("example.txt")) {
            writer.write("Hello, World!");
        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

Este ejemplo demuestra el uso de FileWriter para escribir la cadena "¡Hola, mundo!" en example.txt. La declaración try-with-resources garantiza que FileWriter se cierre automáticamente.

Ejemplo 2: Utilizar BufferedWriter


import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriteFileExample {
    public static void main(String[] args) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) {
            writer.write("Hello, World!");
            writer.newLine();
            writer.write("Welcome to Java file handling.");
        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

En este ejemplo, BufferedWriter se utiliza para una escritura eficaz. Envuelve un FileWriter y proporciona almacenamiento en búfer, lo que puede mejorar el rendimiento cuando se escriben grandes cantidades de datos. El método newLine() se utiliza para insertar un separador de líneas.

Ejemplo 3: Utilizar la clase Archivos


import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class FilesWriteExample {
    public static void main(String[] args) {
        List lines = List.of("Hello, World!", "Welcome to Java file handling.");
        try {
            Files.write(Paths.get("example.txt"), lines);
        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

Este ejemplo utiliza la clase Files para escribir una lista de cadenas en example.txt. El método write() es conveniente para escribir archivos de tamaño pequeño o mediano.

Consejos y buenas prácticas

  • Tratamiento de excepciones: Maneja siempre IOException cuando se trate de operaciones con archivos, para gestionar los posibles errores con elegancia.
  • Gestión de recursos: Utiliza try-with-resources para asegurarte de que los recursos de archivo se cierran correctamente, evitando fugas de recursos.
  • Codificación de caracteres: Especifica una codificación de caracteres al escribir archivos para evitar problemas dependientes de la plataforma.
            new FileWriter("example.txt", StandardCharsets.UTF_8)
            
  • Amortiguación: Utiliza BufferedWriter para escribir archivos grandes, para mejorar el rendimiento reduciendo el número de operaciones de E/S.
  • Operaciones atómicas: Para aplicaciones críticas, plantéate utilizar métodos de Files que admitan operaciones atómicas para evitar escrituras parciales.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis