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.
- Java anexar a arquivo usando
FileWriter
- Anexar conteúdo a um arquivo existente em Java usando
BufferedWriter
- Anexar texto a arquivo em Java usando
PrintWriter
- 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