DEV Community

I/O de arquivo com o uso de fluxos de caracteres

O uso de fluxos de caracteres para operações de I/O em arquivos em Java é útil principalmente para manipulação de texto Unicode, diferentemente dos fluxos baseados em bytes. Classes como FileReader e FileWriter facilitam essa operação com arquivos de texto.

Usando FileWriter

A classe FileWriter permite criar um objeto Writer para gravar em arquivos. Seus principais construtores são:

FileWriter(String nomeArquivo) throws IOException
FileWriter(String nomeArquivo, boolean incluir) throws IOException

Enter fullscreen mode Exit fullscreen mode
  • nomeArquivo: Indica o caminho completo do arquivo.
  • incluir: Define se a escrita será acrescentada ao final do arquivo (true) ou se sobrescreverá o arquivo existente (false).

Abaixo, temos um exemplo de um programa simples que lê linhas de texto do teclado e as grava em um arquivo chamado "test.txt". A leitura continua até o usuário digitar "stop".

import java.io.*;

class KtoD {
  public static void main(String args[]) {
    String str;
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter text ('stop' to quit).");

    try (FileWriter fw = new FileWriter("test.txt")) {
      do {
        System.out.print(": ");
        str = br.readLine();
        if (str.compareTo("stop") == 0) break;
        str = str + "\r\n"; // adiciona nova linha
        fw.write(str);
      } while (str.compareTo("stop") != 0);
    } catch(IOException exc) {
      System.out.println("I/O Error: " + exc);
    }
  }
}

Enter fullscreen mode Exit fullscreen mode

Neste exemplo:

  • BufferedReader lê linhas de texto do console.
  • FileWriter grava o texto no arquivo "test.txt", acrescentando uma nova linha após cada entrada.
  • Condição de parada: Quando o usuário insere "stop", a gravação para.

O uso de FileWriter com BufferedReader simplifica a escrita de texto e manipulação de dados em arquivos, especialmente em operações de texto contínuo e internacionalizado.

Top comments (0)