Excluir o conteúdo de um arquivo em Java

Excluir o conteúdo de um arquivo em Java

1. Introdução

Neste tutorial,we’ll see how we use Java to delete the contents of a file without deleting the file itself. Como existem muitas maneiras simples de fazer isso, vamos explorar cada uma delas.

2. UsandoPrintWriter

A classePrintWriter do Java estende a classeWriter . Ele imprime a representação formatada dos objetos no fluxo de saída de texto.

Faremos um teste simples. Vamos criar uma instânciaPrintWriter apontando para um arquivo existente, excluindo o conteúdo existente do arquivo apenas fechando-o e, em seguida, certifique-se de que o comprimento do arquivo está vazio:

new PrintWriter(FILE_PATH).close();
assertEquals(0, StreamUtils.getStringFromInputStream(new FileInputStream(FILE_PATH)).length());

Além disso, observe que se não precisarmos do objetoPrintWriter para processamento posterior, esta é a melhor opção. No entanto, se precisarmos do objetoPrintWriter para outras operações de arquivo, podemos fazer isso de forma diferente:

PrintWriter writer = new PrintWriter(FILE_PATH);
writer.print("");
// other operations
writer.close();

3. UsandoFileWriter

FileWriter do Java é uma classe Java IO API padrão que fornece métodos para gravar dados orientados a caracteres em um arquivo.

Vamos agora ver como podemos fazer a mesma operação usandoFileWriter:

new FileWriter(FILE_PATH, false).close();

Da mesma forma, se precisarmos do objeto FileWriter para processamento posterior, podemos atribuí-lo a uma variável e atualizar com uma string vazia.

4. UsandoFileOutputStream

FileOutputStream do Java é um fluxo de saída usado para gravar dados de byte em um arquivo.

Agora, vamos excluir o conteúdo do arquivo usandoFileOutputStream:

new FileOutputStream(FILE_PATH).close();

5. Usando Apache Commons IOFileUtils

Apache Commons IO é uma biblioteca que contém classes de utilitários para ajudar com problemas comuns de E / S. Podemos excluir o conteúdo do arquivo usando uma de suas classes de utilitários -FileUtils.

Para ver como isso funciona, vamos adicionar a dependênciaApache Commons IO ao nossopom.xml:


    commons-io
    commons-io
    2.5

Depois disso, vamos dar um exemplo rápido demonstrando a exclusão do conteúdo do arquivo:

FileUtils.write(new File(FILE_PATH), "", Charset.defaultCharset());

6. Usando Java NIOFiles

Java NIO File foi introduzido no JDK 7. Ele define interfaces e classes para acessar arquivos, atributos e sistemas de arquivos.

Também podemos excluir o conteúdo do arquivo usandojava.nio.file.Files:

BufferedWriter writer = Files.newBufferedWriter(Paths.get(FILE_PATH));
writer.write("");
writer.flush();

7. Usando Java NIOFileChannel

Java NIO FileChannel é a implementação da NIO para conectar um arquivo. Ele também complementa o pacote padrãoJava IO.

Também podemos excluir o conteúdo do arquivo usandojava.nio.channels.FileChannel:

FileChannel.open(Paths.get(FILE_PATH), StandardOpenOption.WRITE).truncate(0).close();

8. Usando goiaba

Guava é uma biblioteca de software livre baseada em Java que fornece métodos utilitários para fazer operações de E / S. Vamos ver como usar a API Guava para excluir o conteúdo do arquivo.

Primeiro, precisamos adicionar a dependênciaGuava em nossopom.xml:


    com.google.guava
    guava
    22.0

Depois disso, vamos ver um exemplo rápido para excluir o conteúdo do arquivo usando Guava:

File file = new File(FILE_PATH);
byte[] empty = new byte[0];
com.google.common.io.Files.write(empty, file);

9. Conclusão

Para resumir, vimos várias maneiras de excluir o conteúdo de um arquivo sem excluir o próprio arquivo.

A implementação completa deste tutorial pode ser encontradaover on GitHub.