Anexar texto a um arquivo de texto em Java
-
Anexar texto a um arquivo de texto usando a classe
FileOutputStream
em Java -
Anexar texto a um arquivo de texto usando a classe
FileWriter
em Java -
Anexar texto a um arquivo de texto usando a classe
BufferedWriter
em Java -
Anexar texto a um arquivo de texto usando a classe
Files
em Java - Anexar texto a um arquivo de texto em Java
Este tutorial apresenta como anexar texto a um arquivo de texto existente em Java. Também listamos alguns códigos de exemplo para orientá-lo melhor.
Ler e escrever são duas das operações mais básicas que você pode realizar ao trabalhar com arquivos. Existem várias maneiras de gravar ou anexar dados a um arquivo em Java. Neste artigo, aprenderemos sobre as quatro maneiras diferentes de anexar a um arquivo de texto.
Anexar texto a um arquivo de texto usando a classe FileOutputStream
em Java
A classe FileOutputStream
é usada para gravar dados binários em arquivos. É principalmente preferido para tipos de dados primitivos como int
ou float
, mas também pode ser usado para escrever dados orientados a caracteres.
A string primeiro precisa ser convertida em um array de bytes antes de ser escrita; você pode usar o método getBytes()
para este propósito. Também precisamos passar true
como um segundo argumento para seu construtor. Este segundo argumento é para o sinalizador de acréscimo booleano e é feito para indicar que estamos tentando anexar a um arquivo existente.
Se for ignorado, a classe FileOutputStream
substituirá o conteúdo do arquivo. Ele criará um novo arquivo se o arquivo ainda não estiver presente no local mencionado.
Aqui está um exemplo onde tentamos anexar a frase The quick brown fox jumps over the lazy dog
a um arquivo existente. O \r
e \n
são usados para inserir o texto no início de uma nova linha.
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);
}
}
}
Anexar texto a um arquivo de texto usando a classe FileWriter
em Java
A classe Java FileWriter
foi projetada para gravar fluxos de caracteres em um arquivo. Podemos usá-lo para anexar caracteres ou strings a um arquivo existente ou a um novo arquivo. Se o arquivo não estiver presente no caminho mencionado, um novo arquivo será criado e os dados serão gravados nesse novo arquivo.
Ao contrário da classe FileOutputStream
anterior, não precisamos converter as strings em bytes antes de escrever. No entanto, também precisamos passar true
como um segundo argumento para o construtor FileWriter
, o que indica que estamos tentando anexar a um arquivo existente.
Se omitido, ele substituirá o conteúdo existente do arquivo. O código a seguir demonstra como podemos acrescentar uma única linha a um arquivo 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);
}
}
}
Anexar texto a um arquivo de texto usando a classe BufferedWriter
em Java
A classe FileWriter
é freqüentemente encapsulada por outros escritores como o BufferedWriter
. Este processo é feito porque um BufferedWriter
é muito mais eficiente do que um FileWriter
.
O BufferedWriter
é preferível ao FileWriter
quando temos várias operações de escrita. Ele usa um buffer de memória interno para armazenar os dados que devem ser anexados ao arquivo. Quando este buffer estiver cheio, ou não tivermos mais nada para acrescentar, o BufferedWriter
gravará no arquivo real.
Ele grava grandes blocos de dados no arquivo a partir de seu buffer, em vez de gravá-lo com frequência; isso leva a chamadas de sistema menores. Portanto, é muito mais eficiente do que um FileWriter
normal.
Mas se tivermos uma única operação de escrita, então o BufferedWriter
adiciona mais um passo no processo de escrita. Portanto, seria melhor apenas usar o FileWriter
.
Para usar o BufferedWriter
, primeiro precisamos de um objeto FileWriter
que passaremos para o construtor do BufferedWriter
. Certifique-se de usar true
para o sinalizador de acréscimo.
O código a seguir demonstra o funcionamento de BufferedWriter
em 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);
}
}
}
Anexar texto a um arquivo de texto usando a classe Files
em Java
A classe de utilitário Files
foi adicionada ao Java 7 e fornece outra maneira de gravar dados em arquivos; usamos o método Files.write()
para fazer isso. Este método requer o caminho do arquivo e também a matriz de bytes da string a ser anexada.
Também precisamos especificar StandardOpenOption.APPEND
para anexar texto a um arquivo existente. Certifique-se de que o arquivo esteja presente no caminho fornecido; caso contrário, ele retornará uma NoSuchFileException
.
Este método não é preferido se tivermos que gravar no mesmo arquivo várias vezes porque o arquivo também será aberto e fechado várias vezes, diminuindo o desempenho geral.
O código a seguir abaixo demonstra como o método Files.write()
funciona no 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);
}
}
}
Anexar texto a um arquivo de texto em Java
Java oferece várias opções para manipulação de arquivos. Podemos anexar dados a um arquivo usando FileOutputStream
, FileWriter
, BufferedWriter
ou a classe de utilitário Files
.
Para as classes utilitárias FileOutputStream
e Files
, primeiro precisamos converter a string em um array de bytes e depois passá-la para o método write()
.
O BufferedWriter
é preferido quando temos que escrever uma pequena quantidade de dados várias vezes no mesmo arquivo. Por outro lado, as classes utilitárias FileWriter
e Files
farão várias chamadas de sistema para um grande número de gravações; isso diminui seu desempenho geral.
Artigo relacionado - Java File
- Como remover quebras de linha formam um arquivo em Java
- Copiar um arquivo em Java
- Obtenha a contagem de linha de um arquivo em Java
- Abra um arquivo em Java
- Grave o byte no arquivo em Java