Agregar a un archivo en Java

Hoy veremos cómo agregar contenido a un archivo en Java. Agregar contenido a un archivo en Java es una operación común de entrada/salida en Java. Por ejemplo, cada vez que imprimimos algo en los registros del servidor, se agrega al archivo existente.

Agregar contenido a un archivo en Java

Podemos agregar contenido a un archivo en Java utilizando las siguientes clases.

  1. Agregar contenido a un archivo en Java utilizando FileWriter
  2. Agregar contenido a un archivo existente en Java utilizando BufferedWriter
  3. Agregar texto a un archivo en Java utilizando PrintWriter
  4. Agregar contenido a un archivo en Java utilizando FileOutputStream

Si estás trabajando con datos de texto y el número de operaciones de escritura es bajo, utiliza FileWriter y utiliza su constructor con el valor de la bandera de agregado como true. Si el número de operaciones de escritura es alto, debes utilizar BufferedWriter. Para agregar datos binarios o de flujo sin formato a un archivo existente, debes utilizar FileOutputStream.

Agregar contenido a un archivo en Java utilizando FileWriter

Aquí está el programa corto para agregar al archivo en Java usando FileWriter. Más adelante veremos un programa de ejemplo completo de Java para agregar al archivo.

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
fr.write("data");
fr.close();

Agregar contenido en Java a un archivo existente usando BufferedWriter

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
BufferedWriter br = new BufferedWriter(fr);
br.write("data");

br.close();
fr.close();

Agregar texto a un archivo en Java usando PrintWriter

También podemos usar PrintWriter para agregar al archivo en Java.

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
BufferedWriter br = new BufferedWriter(fr);
PrintWriter pr = new PrintWriter(br);
pr.println("data");
pr.close();
br.close();
fr.close();

Agregar al archivo en Java usando FileOutputStream

Deberías usar FileOutputStream para agregar datos a un archivo cuando sean datos en bruto, datos binarios, imágenes, videos, etc.

OutputStream os = new FileOutputStream(new File("append.txt"), true);
os.write("data".getBytes(), 0, "data".length());
os.close();

Ejemplo de cómo añadir a un archivo en Java

Aquí está el programa final en Java para añadir a un archivo, mostrando todas las diferentes opciones que discutimos anteriormente.

package com.journaldev.files;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

public class JavaAppendToFile {

	/**
	 * Java append to file example
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		String filePath = "/Users/pankaj/Downloads/append.txt";

		String appendText = "This String will be appended to the file, Byte=0x0A 0xFF";

		appendUsingFileWriter(filePath, appendText);

		appendUsingBufferedWriter(filePath, appendText, 2);

		appendUsingPrintWriter(filePath, appendText);

		appendUsingFileOutputStream(filePath, appendText);
	}

	private static void appendUsingPrintWriter(String filePath, String text) {
		File file = new File(filePath);
		FileWriter fr = null;
		BufferedWriter br = null;
		PrintWriter pr = null;
		try {
			// para añadir a un archivo, necesitas inicializar FileWriter usando el siguiente constructor
			fr = new FileWriter(file, true);
			br = new BufferedWriter(fr);
			pr = new PrintWriter(br);
			pr.println(text);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				pr.close();
				br.close();
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Use Stream for java append to file when you are dealing with raw data, binary
	 * data
	 * 
	 * @param data
	 */
	private static void appendUsingFileOutputStream(String fileName, String data) {
		OutputStream os = null;
		try {
			// el indicador true indica al OutputStream que añada
			os = new FileOutputStream(new File(fileName), true);
			os.write(data.getBytes(), 0, data.length());
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Use BufferedWriter when number of write operations are more
	 * 
	 * @param filePath
	 * @param text
	 * @param noOfLines
	 */
	private static void appendUsingBufferedWriter(String filePath, String text, int noOfLines) {
		File file = new File(filePath);
		FileWriter fr = null;
		BufferedWriter br = null;
		try {
			// para añadir a un archivo, necesitas inicializar FileWriter usando el siguiente constructor
			fr = new FileWriter(file, true);
			br = new BufferedWriter(fr);
			for (int i = 0; i < noOfLines; i++) {
				br.newLine();
				// puedes usar el método write o append
				br.write(text);
			}

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Use FileWriter when number of write operations are less
	 * 
	 * @param filePath
	 * @param text
	 * @param noOfLines
	 */
	private static void appendUsingFileWriter(String filePath, String text) {
		File file = new File(filePath);
		FileWriter fr = null;
		try {
			// El argumento del constructor siguiente decide si añadir o sobrescribir
			fr = new FileWriter(file, true);
			fr.write(text);

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

Eso es todo para añadir a un archivo en un programa Java.

Puedes consultar más ejemplos de E/S en Java en nuestro Repositorio de GitHub.

Referencias:

Source:
https://www.digitalocean.com/community/tutorials/java-append-to-file