Agregar texto a un archivo de texto en Java

Mohammad Irfan 12 octubre 2023
  1. Agregar texto a un archivo de texto usando la clase FileOutputStream en Java
  2. Agregar texto a un archivo de texto usando la clase FileWriter en Java
  3. Agregar texto a un archivo de texto usando la clase BufferedWriter en Java
  4. Agregar texto a un archivo de texto usando la clase Files en Java
  5. Agregar texto a un archivo de texto en Java
Agregar texto a un archivo de texto en Java

Este tutorial presenta cómo agregar texto a un archivo de texto existente en Java. También hemos enumerado algunos códigos de ejemplo para guiarlo mejor.

Leer y escribir son dos de las operaciones más básicas que puede realizar cuando trabaja con archivos. Hay varias formas de escribir o agregar datos a un archivo en Java. En este artículo, aprenderemos acerca de las cuatro formas diferentes de agregar a un archivo de texto.

Agregar texto a un archivo de texto usando la clase FileOutputStream en Java

La clase FileOutputStream se utiliza para escribir datos binarios en archivos. Se prefiere principalmente para tipos de datos primitivos como int o float, pero también se puede utilizar para escribir datos orientados a caracteres.

La cadena primero debe convertirse en un array de bytes antes de escribir; puede utilizar el método getBytes() para este propósito. También necesitamos pasar true como segundo argumento a su constructor. Este segundo argumento es para la bandera de anexión booleana, y está hecho para indicar que estamos intentando agregar a un archivo existente.

Si se ignora, la clase FileOutputStream sobrescribirá el contenido del archivo. Creará un nuevo archivo si el archivo aún no está presente en la ubicación mencionada.

Aquí hay un ejemplo en el que intentamos agregar la oración The quick brown fox jumps over the lazy dog a un archivo existente. Las \r y \n se utilizan para insertar el texto al comienzo de una nueva línea.

import java.io.FileOutputStream;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileOutputStream f = new FileOutputStream(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes(); // converting string into byte array
      f.write(byteArr);
      f.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Agregar texto a un archivo de texto usando la clase FileWriter en Java

La clase Java FileWriter está diseñada para escribir secuencias de caracteres en un archivo. Podemos usarlo para agregar caracteres o cadenas a un archivo existente o un archivo nuevo. Si el archivo no está presente en la ruta mencionada, se crea un nuevo archivo y los datos se escriben en este nuevo archivo.

A diferencia de la clase anterior FileOutputStream, no necesitamos convertir las cadenas en bytes antes de escribir. Sin embargo, también necesitamos pasar true como segundo argumento al constructor FileWriter, lo que indica que estamos intentando agregar a un archivo existente.

Si se omite, sobrescribirá el contenido existente del archivo. El siguiente código demuestra cómo podemos agregar una sola línea a un archivo existente usando FileWriter.

import java.io.FileWriter;
public class SimpleTesting {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      fw.write(lineToAppend);
      fw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Agregar texto a un archivo de texto usando la clase BufferedWriter en Java

La clase FileWriter a menudo es envuelta por otros escritores como el BufferedWriter. Este proceso se realiza porque un BufferedWriter es mucho más eficiente que un FileWriter.

Se prefiere el BufferedWriter sobre el FileWriter cuando tenemos varias operaciones de escritura. Utiliza una memoria intermedia interna para almacenar los datos que se deben agregar al archivo. Cuando este búfer esté lleno, o ya no tengamos nada más que agregar, el BufferedWriter escribirá en el archivo real.

Escribe grandes porciones de datos en el archivo desde su búfer en lugar de escribir con frecuencia en él; esto conduce a menores llamadas al sistema. Por lo tanto, es mucho más eficiente que un FileWriter normal.

Pero si tenemos una sola operación de escritura, entonces el BufferedWriter agrega otro paso en el proceso de escritura. Entonces, sería mejor usar el FileWriter.

Para usar el BufferedWriter, primero necesitamos un objeto FileWriter que pasaremos al constructor del BufferedWriter. Asegúrese de utilizar true para el indicador de adición.

El siguiente código demuestra el funcionamiento de BufferedWriter en Java.

import java.io.BufferedWriter;
import java.io.FileWriter;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      BufferedWriter bw = new BufferedWriter(fw);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      bw.write(lineToAppend);
      bw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Agregar texto a un archivo de texto usando la clase Files en Java

La clase de utilidad Files se agregó en Java 7 y proporciona otra forma de escribir datos en archivos; utilizamos el método Files.write() para hacer esto. Este método requiere la ruta del archivo y también necesita que se agregue el array de bytes de la cadena.

También necesitamos especificar StandardOpenOption.APPEND para agregar texto a un archivo existente. Asegúrese de que el archivo esté presente en la ruta indicada; de lo contrario, devolverá una NoSuchFileException.

Este método no es el preferido si tenemos que escribir en el mismo archivo varias veces porque el archivo también se abrirá y cerrará varias veces, disminuyendo el rendimiento general.

El siguiente código a continuación demuestra cómo funciona el método Files.write() en Java I/O.

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class Main {
  public static void main(String args[]) {
    try {
      String file = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes();
      Files.write(Paths.get(file), byteArr, StandardOpenOption.APPEND);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Agregar texto a un archivo de texto en Java

Java proporciona múltiples opciones para el manejo de archivos. Podemos agregar datos a un archivo usando FileOutputStream, FileWriter, BufferedWriter o la clase de utilidad Files.

Para las clases de utilidad FileOutputStream y Files, primero necesitamos convertir la cadena en un array de bytes y luego pasarla al método write().

Se prefiere el BufferedWriter cuando tenemos que escribir una pequeña cantidad de datos varias veces en el mismo archivo. Por otro lado, las clases de utilidad FileWriter y Files realizarán múltiples llamadas al sistema para un gran número de escrituras; esto disminuye su rendimiento general.

Artículo relacionado - Java File

Artículo relacionado - Java IO