Escrevendo em um Arquivo

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como escrever dados em um arquivo usando a linguagem de programação Java. Escrever dados em um arquivo pode ser muito útil quando você precisa armazenar dados gerados pelo seu programa para uso futuro.

Abrir/Criar um Arquivo

O primeiro passo é abrir ou criar um arquivo no qual queremos escrever os dados. Criaremos um novo arquivo chamado output.txt no diretório ~/project.

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
    public static void main(String[] args) {
        Path path = Paths.get("~/project/output.txt");
    }
}

Escrever uma string em um arquivo

Agora que temos nosso arquivo aberto, podemos escrever uma string nele. Isso é feito usando o método Files.write().

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("~/project/output.txt");
        String content = "This is some text that we want to write to the file";

        Files.write(path, content.getBytes());
    }
}

Aqui, estamos escrevendo uma string no arquivo convertendo-a em bytes e passando-a para o método Files.write(). Observe que precisamos usar o método getBytes() para converter a string em bytes.

Para executar o código acima em seu terminal, primeiro, você precisa navegar até o diretório do seu projeto no terminal. Em seguida, execute o seguinte comando:

javac Main.java && java Main

Escrever uma Lista de strings em um arquivo

Também podemos escrever uma lista de strings no arquivo usando o método Files.write(), da seguinte forma:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("~/project/output.txt");
        List<String> lines = Arrays.asList("This is line 1", "This is line 2", "This is line 3");

        Files.write(path, lines, StandardCharsets.UTF_8);
    }
}

Aqui, estamos escrevendo uma lista de strings no arquivo. Observe que estamos usando uma versão sobrecarregada do método Files.write() que recebe uma lista de strings como parâmetro.

Para executar o código acima para escrever uma lista de strings no arquivo, primeiro, você precisa navegar até o diretório do seu projeto no terminal. Em seguida, execute o seguinte comando:

javac Main.java && java Main

Anexar a um arquivo

Se você deseja escrever dados em um arquivo sem sobrescrever os dados existentes no arquivo, pode usar a opção StandardOpenOption.APPEND ao abrir o arquivo. Isso anexará quaisquer novos dados ao final do arquivo.

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import java.nio.file.StandardOpenOption;

public class Main {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("~/project/output.txt");
        List<String> lines = Arrays.asList("This is line 4", "This is line 5", "This is line 6");

        Files.write(path, lines, StandardCharsets.UTF_8, StandardOpenOption.APPEND);
    }
}

Aqui, adicionamos a opção StandardOpenOption.APPEND ao método Files.write(), que informa ao Java para anexar novos dados ao final do arquivo, em vez de sobrescrever quaisquer dados existentes.

Para executar a operação de anexação, primeiro, você precisa navegar até o diretório do seu projeto no terminal. Em seguida, execute o seguinte comando:

javac Main.java && java Main

Fechar o arquivo

Finalmente, precisamos fechar o arquivo usando o método Files.close(). Isso garantirá que quaisquer dados em buffer sejam gravados no arquivo antes que ele seja fechado.

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import java.nio.file.StandardOpenOption;

public class Main {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("~/project/output.txt");
        String content = "This is some text that we want to write to the file";

        Files.write(path, content.getBytes());
        Files.write(path, System.lineSeparator().getBytes(), StandardOpenOption.APPEND);
        Files.write(path, "This is a new line".getBytes(), StandardOpenOption.APPEND);

        Files.close();
    }
}

Resumo

Neste laboratório, aprendemos como escrever dados em um arquivo usando a classe Files do Java. Vimos como escrever uma string em um arquivo, escrever uma lista de strings em um arquivo, anexar a um arquivo e fechar um arquivo. Esperamos que agora você possa escrever um arquivo facilmente com a ajuda da classe Files do Java.