Java anexar a arquivo

Hoje vamos analisar como anexar a um arquivo em Java. Anexar em Java é uma operação comum de E/S em Java. Por exemplo, sempre que imprimimos algo nos logs do servidor, ele é anexado ao arquivo existente.

Java anexar a arquivo

Podemos anexar a um arquivo em Java usando as seguintes classes.

  1. Java anexar a arquivo usando FileWriter
  2. Anexar conteúdo a um arquivo existente em Java usando BufferedWriter
  3. Anexar texto a arquivo em Java usando PrintWriter
  4. Anexar a arquivo em Java usando FileOutputStream

Se você estiver trabalhando com dados de texto e o número de operações de gravação for baixo, use FileWriter e use seu construtor com o valor do sinalizador de anexação como true. Se o número de operações de gravação for grande, você deve usar o BufferedWriter. Para anexar dados de fluxo binário ou bruto a um arquivo existente, você deve usar FileOutputStream.

Java anexar a arquivo usando FileWriter

Aqui está o pequeno programa para anexar a um arquivo em Java usando o FileWriter. Mais tarde, vamos analisar um programa de exemplo completo de anexação em Java a um arquivo.

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

Anexar conteúdo em Java a um arquivo 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();

Anexar texto a um arquivo em Java usando PrintWriter

Também podemos usar PrintWriter para anexar a um arquivo em 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();

Anexar a um arquivo em Java usando FileOutputStream

Você deve usar FileOutputStream para anexar dados a um arquivo quando são dados brutos, dados binários, imagens, vídeos, etc.

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

Exemplo de anexar em Java

Aqui está o programa final em Java para anexar a um arquivo, mostrando todas as diferentes opções 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 anexar a um arquivo, você precisa inicializar o FileWriter usando o construtor abaixo
			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 {
			// a flag true abaixo indica que o OutputStream deve anexar
			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 anexar a um arquivo, você precisa inicializar o FileWriter usando o construtor abaixo
			fr = new FileWriter(file, true);
			br = new BufferedWriter(fr);
			for (int i = 0; i < noOfLines; i++) {
				br.newLine();
				// você pode usar o método write ou 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 {
			// O argumento do construtor abaixo decide se deve anexar ou substituir
			fr = new FileWriter(file, true);
			fr.write(text);

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

}

Isso é tudo para anexar a um arquivo no programa Java.

Você pode conferir mais exemplos de E/S em Java em nosso Repositório do GitHub.

Referências:

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