1. 序章

このチュートリアルでは、 Javaを使用して、ファイル自体を削除せずにファイルの内容を削除する方法を説明します。簡単な方法はたくさんあるので、それぞれを1つずつ見ていきましょう。

2. PrintWriterを使用する

JavaのPrintWriterクラスは、Writerクラスを拡張します。 オブジェクトのフォーマットされた表現をテキスト出力ストリームに出力します。

簡単なテストを実行します。 既存のファイルを指す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は、文字指向のデータをファイルに書き込むメソッドを提供する標準のJavaIOAPIクラスです。

FileWriter:を使用して同じ操作を実行する方法を見てみましょう。

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

同様に、さらに処理するために FileWriter オブジェクトが必要な場合は、それを変数に割り当てて、空の文字列で更新できます。

4. FileOutputStreamを使用する

JavaのFileOutputStreamは、バイトデータをファイルに書き込むために使用される出力ストリームです。

それでは、 FileOutputStream:を使用してファイルの内容を削除しましょう。

new FileOutputStream(FILE_PATH).close();

5. ApacheCommonsIOの使用FileUtils

Apache Commons IO は、一般的なIOの問題を解決するためのユーティリティクラスを含むライブラリです。 ユーティリティクラスの1つであるFileUtils。を使用して、ファイルのコンテンツを削除できます。

これがどのように機能するかを確認するために、 Apache CommonsIO依存関係をpom.xmlに追加しましょう。

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

その後、ファイルコンテンツの削除を示す簡単な例を見てみましょう。

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

6. JavaNIOファイルを使用する

JavaNIOファイルはJDK7で導入されました。 ファイル、ファイル属性、およびファイルシステムにアクセスするためのインターフェイスとクラスを定義します。

java.nio.file.Filesを使用してファイルの内容を削除することもできます。

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

7. Java NIO FileChannelを使用する

Java NIO FileChannelは、ファイルを接続するためのNIOの実装です。 また、標準の JavaIOパッケージを補完します。

java.nio.channels.FileChannelを使用してファイルの内容を削除することもできます。

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

8. グアバの使用

Guava は、I/O操作を実行するためのユーティリティメソッドを提供するオープンソースのJavaベースのライブラリです。 GuavaAPIを使用してファイルの内容を削除する方法を見てみましょう。

まず、pom.xmlGuava依存関係を追加する必要があります。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

その後、Guavaを使用してファイルの内容を削除する簡単な例を見てみましょう。

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

9. 結論

要約すると、ファイル自体を削除せずにファイルのコンテンツを削除する複数の方法を見てきました。

このチュートリアルの完全な実装は、GitHubにあります。