【Java入門】Fileの削除(delete、強制削除、拡張子の指定)

こんにちは!フリーエンジニアのヤマシタです。

Javaでファイル操作に使用するFileクラスはさまざまな機能があります。

この記事では、ファイル操作で必要な、

・ファイルを削除する方法
・ディレクトリを削除する方法

という基本的な内容から、

・削除できないファイルを強制的に削除する方法
・ディレクトリ配下のファイルを全て削除する方法
・拡張子を指定して削除する方法

などの応用的な使い方に関しても解説していきます。

今回はそんな悩みを解決するために、ファイルの削除方法について、わかりやすく解説します!

deleteでファイルを削除する方法

ファイルを削除するには、Fileクラスのdeleteメソッドを使用します。

deleteメソッドはboolean型の値を返します。

以下にdeleteメソッドを使用した、ファイルの削除方法を記述します。

このサンプルコードでは、Fileクラスのインスタンスの引数に絶対パスでファイルを指定し、deleteメソッドでファイルを削除しています。

ファイルの基本的な削除方法や、ディレクトリを削除する方法については、以下の記事でも詳しく解説しています!

【Java入門】Fileの削除(delete、強制削除、拡張子の指定)
更新日 : 2017年8月23日

削除できないファイルを強制的に削除するには

ファイルを削除するdeleteメソッドを実行しても、ファイルの削除に失敗する場合があります。

deleteメソッドは、削除に失敗した場合や、ファイル自体が存在しない場合及び、削除対象のファイルをユーザーが開いていた場合なども、ファイルの削除が失敗してしまうこともあります。

しかし、Javaにはファイルを強制的に削除する方法はありません

そのため、削除に失敗した場合は、以下のように指定した回数分ループでリトライする方法があります。

このサンプルコードでは、リトライ回数を100で設定し、ファイルの削除に失敗したら、sleepメソッドを使用して1秒スリープ後に、再びファイル削除を実行しています。

ディレクトリ配下の全てのファイルを削除する

Fileクラスのdeleteメソッドは、基本的に1つのファイルしか削除できません

しかし、場合によっては複数のファイルをまとめて削除したい場合があります。

以下に、再帰的に自身を呼び出して、指定したディレクトリの配下のファイルをまとめて削除する方法を記述します。

このサンプルコードでは、mainメソッドで、Fileクラスでファイルを削除するディレクトリを指定しています。

次にfileClassで引数に渡されたFileクラスのオブジェクトを指定して、削除処理を実施しています。

指定したディレクトリの配下にファイルがある場合は、listFilesメソッドで取得したリスト分ループし、ファイルの場合は再帰的に自身を呼び出してファイルを削除しています。

拡張子を指定して削除する方法

javaでは基本的に削除処理で正規表現や、ワイルドカードを使用しての削除はできません

しかし、指定した文字列や拡張子が含まれているファイルを指定して削除することは可能です。

以下にファイルの拡張子が”*.java”の場合は、ファイルを削除する方法を記述します。

このサンプルコードでは、listFilesメソッドで取得したリスト分ループし、getPathメソッドでファイルとファイルパスを取得しています。

endsWithメソッドで拡張子が”.java”の場合は、再帰的にファイルを削除する処理をしています。

Fileクラスについてもっと詳しく知りたい方へ

Fileクラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

JavaのFileクラスをマスター!基礎から便利な使い方まで総まとめ
更新日 : 2019年5月10日

まとめ

ここではFileクラスを使用した、ファイルを削除するdeleteメソッドや応用的な削除方法について説明しました。

ファイルの削除処理自体は、deleteメソッドを使用するだけで簡単に行えますが、まとめて削除したり、特定の条件で削除したい場合は、処理を工夫しなければいけません。

もしファイルを削除する処理を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説