Anexar texto a um arquivo de texto em Java

Mohammad Irfan 12 outubro 2023
  1. Anexar texto a um arquivo de texto usando a classe FileOutputStream em Java
  2. Anexar texto a um arquivo de texto usando a classe FileWriter em Java
  3. Anexar texto a um arquivo de texto usando a classe BufferedWriter em Java
  4. Anexar texto a um arquivo de texto usando a classe Files em Java
  5. Anexar texto a um arquivo de texto 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

Artigo relacionado - Java IO