【Java】deleteを使ってファイル/ディレクトリを削除する!

ファイル/ディレクトリを削除するにはFileクラスのdeleteメソッドを使用します。

Fileクラスのdeleteメソッドは、対象のファイル(またはディレクトリ)を削除するメソッドとなります。

また、deleteメソッドは戻り値として削除できた場合はtrue、削除できなかった場合はfalseを返すため、ファイル(またはディレクトリ)を削除できたかどうかをログに残すことができます。

今回はFileクラスのdeleteメソッドを使って以下の場合でファイル/ディレクトリを削除していきます。

⚫︎ 削除するファイル/ディレクトリが存在する場合
⚫︎ 削除するファイル/ディレクトリが存在しない場合

また、Java7から使用できるようになったFilesクラスのdeleteメソッドやdeleteIfExistsメソッドを使って、ファイル/ディレクトリを削除する方法についても紹介していきます。

deleteメソッドとは

Fileクラスのdeleteメソッドとは、対象のファイル(またはディレクトリ)を削除するメソッドになります。

deleteメソッドの書き方

Fileクラスのdeleteメソッドの構文は下記となります。

まず、deleteメソッドが使用できるようにFileクラスをインポートします。

そして、ファイルの後にdeleteを呼び出すことでdeleteの前に指定したファイルを削除します。

また、返り値として削除できた場合はtrueを返し、削除できなかった場合はfalseを返します。

ファイル/ディレクトリを削除するサンプルコード

ファイル/ディレクトリを削除するサンプルコードを紹介します。

削除するファイル/ディレクトリが存在する場合

コンソールから実行する場合は、カレントディレクトリに「deleteFile.txt」を用意します。

また、Eclipseで実行する場合は、プロジェクト直下に「deleteFile.txt」を用意します。

出力結果

削除成功

deleteメソッドがtrueを返しているため、deleteFile.txtが削除されています。

削除するファイル/ディレクトリが存在しない場合

出力結果

削除失敗

削除するファイルやディレクトリが存在しない場合はdeleteメソッドはfalseを返します。

NIO.2(Filesクラス)でファイル/ディレクトリを削除する場合

NIO.2とはJava7で導入された「java.nio.file」パッケージとそのサブパッケージとを合わせたものであり、NIO.2のFilesクラスを使用することでとても簡単にファイル処理を行うことができます。

そのため、FilesクラスのdeleteメソッドやFilesクラスのdeleteIsExistsメソッドを呼び出すことによって、ファイル、または、ディレクトリを削除することができます。

deleteメソッドとdeleteIfExistsメソッドの違いは、削除対象のファイル、またはディレクトリが存在しなかった場合、deleteメソッドでは例外が発生しますが、deleteIfExistsメソッドでは戻り値が「false」となり、例外が発生しないということです。

つまり、deleteIfExistsメソッドを使うことで、ファイルの存在チェックが不要になります。

しかし、削除対象が空でないディレクトリの場合や、Javaを実行したユーザのアクセス権によってファイル、または、ディレクトリを削除できない場合は、Fileクラスのdeleteメソッドと同様に例外が発生します。

Main.java

出力結果

削除成功

コンソールから実行する場合は、カレントディレクトリに「deleteFileA.txt」と「deleteFileB.txt」を用意します。
Eclipseで実行する場合は、プロジェクト直下に「deleteFileA.txt」と「deleteFileB.txt」を用意します。
その状態でサンプルコードであるMain.javaを実行すると「deleteFileA.txt」と「deleteFileB.txt」が削除されます。

また、コンソールに、削除成功が表示されます。

今回のポイント

deleteでファイル/ディレクトリを削除

ファイル/ディレクトリを削除するにはFileクラスのdeleteメソッドを使用する。

⚫︎ Fileクラスのdeleteメソッドで、ファイル、または、ディレクトリを削除することができる

⚫︎ deleteメソッドhs正常に削除された場合には「true」を返し、正常に削除されなかった場合には「false」を返す

⚫︎ ディレクトリを削除する場合、そのディレクトリ内が空である必要があります。

⚫︎ Javaを実行したユーザのアクセス権によってファイル、または、ディレクトリを削除できない場合は、例外が発生する

deleteやdeleteIfExistsでファイル/ディレクトリを削除

Filesクラスでファイル/ディレクトリを削除するにはのdeleteメソッドやdeleteIfExistsメソッドを使用する。

⚫︎ FilesクラスのdeleteメソッドやdeleteIfExistsメソッドで、ファイル、または、ディレクトリを削除することができる

⚫︎ deleteメソッドとdeleteIfExistsメソッドの違いは、削除対象のファイル、またはディレクトリが存在しなかった場合の動きである
(deleteメソッドでは例外が発生するが、deleteIfExistsメソッドではfalseを返す)

⚫︎ Javaを実行したユーザのアクセス権によってファイルやディレクトリを削除できない場合は、どちらも例外が発生する

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し