Javaでファイルの内容を削除する

1. 前書き

このチュートリアルでは、* Javaを使用して、ファイル自体を削除せずにファイルの内容を削除する方法を確認します。*簡単な方法がたくさんあるので、1つずつ調べてみましょう。

2. _PrintWriter_を使用する

Javaのlink:/java-write-to-file[_PrintWriter_]クラスは__Writer __classを拡張します。 「オブジェクト」のフォーマットされた表現をテキスト出力ストリームに出力します。
簡単なテストを実行します。 既存のファイルを指す_PrintWriter_インスタンスを作成し、ファイルの既存のコンテンツを削除するだけで、ファイルを閉じてから、ファイルの長さが空であることを確認します。
new PrintWriter(FILE_PATH).close();
assertEquals(0, StreamUtils.getStringFromInputStream(new FileInputStream(FILE_PATH)).length());
また、今後の処理に_PrintWriter_オブジェクトが必要ない場合、これが最適なオプションであることに注意してください。 ただし、さらにファイル操作のために_PrintWriter_オブジェクトが必要な場合は、これを別の方法で行うことができます。
PrintWriter writer = new PrintWriter(FILE_PATH);
writer.print("");
// other operations
writer.close();

3. _FileWriter_の使用

Javaの_FileWriter_は、文字指向のデータをファイルに書き込むメソッドを提供する標準のJava IO APIクラスです。
_FileWriter:_を使用して同じ操作を実行する方法を見てみましょう。
new FileWriter(FILE_PATH, false).close();
同様に、さらに処理するために__ furtherFileWriter__オブジェクトが必要な場合は、それを変数に割り当てて空の文字列で更新できます。

4.  _ FileOutputStream _の使用

Javaのlink:/convert-input-stream-to-a-file[_FileOutputStream_]は、バイトデータをファイルに書き込むために使用される出力ストリームです。
では、_FileOutputStream:_を使用してファイルのコンテンツを削除しましょう。
new FileOutputStream(FILE_PATH).close();

5. Apache Commons IO _FileUtils_の使用

link:/apache-commons-io[Apache Commons IO]は、一般的なIOの問題を解決するユーティリティクラスを含むライブラリです。 ユーティリティクラスのいずれかを使用して、ファイルのコンテンツを削除できます– _FileUtils._
これがどのように機能するかを見るために、https_pom.xml_にhttps://search.maven.org/search?q=g:commons-io%20a:commons-io[Apache Commons IO]依存関係を追加しましょう。
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>
その後、ファイルコンテンツの削除を示す簡単な例を見てみましょう。
FileUtils.write(new File(FILE_PATH), "", Charset.defaultCharset());

6. Java NIO _Files_の使用

link:/java-nio-2-file-api[Java NIOファイル]がJDK 7で導入されました。 ファイル、ファイル属性、およびファイルシステムにアクセスするためのインターフェイスとクラスを定義します。
_java.nio.file.Files_を使用してファイルの内容を削除することもできます。
BufferedWriter writer = Files.newBufferedWriter(Paths.get(FILE_PATH));
writer.write("");
writer.flush();

7. Java NIO _FileChannel_の使用

Java NIO FileChannelは、ファイルを接続するためのNIOの実装です。 また、標準のlink:/java-io[Java IO]パッケージを補完します。
_java.nio.channels.FileChannel_を使用してファイルの内容を削除することもできます。
FileChannel.open(Paths.get(FILE_PATH), StandardOpenOption.WRITE).truncate(0).close();

8. グアバの使用

link:/guava-write-to-file-read-from-file[Guava]は、I / O操作を行うユーティリティメソッドを提供するオープンソースのJavaベースのライブラリです。 ファイルの内容を削除するためにGuava APIを使用する方法を見てみましょう。
最初に、https://search.maven.org/search?q=g:com.google.guava%20a:guava[Guava]依存関係を_pom.xml_に追加する必要があります。
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>22.0</version>
</dependency>
その後、Guavaを使用してファイルの内容を削除する簡単な例を見てみましょう。
File file = new File(FILE_PATH);
byte[] empty = new byte[0];
com.google.common.io.Files.write(empty, file);

9. 結論

要約すると、ファイル自体を削除せずにファイルのコンテンツを削除する複数の方法を見てきました。
このチュートリアルの完全な実装は、https://github.com/RajeshBhojwani/tutorials/tree/master/core-java-io [GitHub上]にあります。