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.