Java File delete() メソッド
delete()メソッドは Java のjava.io.FileFile クラスが提供するインスタンスメソッドで、ファイルまたは空のディレクトリを削除するために使用されます。このメソッドは File オブジェクトが表すファイルまたはディレクトリの削除を試みます。
メソッド構文
public boolean delete()
戻り値
true:ファイルまたはディレクトリが正常に削除された場合false:削除に失敗した場合
メソッドの特徴
- 空のディレクトリのみ削除できます(ディレクトリ内にファイルやサブディレクトリを含めることはできません)
- ファイルがシンボリックリンクの場合、削除されるのはリンク自体であり、リンクが指すファイルではありません
- 削除操作は元に戻せません。一度削除すると復元できません
使用例
ファイル削除の例
例
import java.io.File;
public class DeleteFileExample {
public static void main(String[] args) {
File file = new File("test.txt");
if(file.delete()) {
System.out.println("ファイルの削除に成功しました");
} else {
System.out.println("ファイルの削除に失敗しました");
}
}
}
public class DeleteFileExample {
public static void main(String[] args) {
File file = new File("test.txt");
if(file.delete()) {
System.out.println("ファイルの削除に成功しました");
} else {
System.out.println("ファイルの削除に失敗しました");
}
}
}
空ディレクトリ削除の例
例
import java.io.File;
public class DeleteDirectoryExample {
public static void main(String[] args) {
File dir = new File("empty_folder");
if(dir.delete()) {
System.out.println("ディレクトリの削除に成功しました");
} else {
System.out.println("ディレクトリの削除に失敗しました");
}
}
}
public class DeleteDirectoryExample {
public static void main(String[] args) {
File dir = new File("empty_folder");
if(dir.delete()) {
System.out.println("ディレクトリの削除に成功しました");
} else {
System.out.println("ディレクトリの削除に失敗しました");
}
}
}
よくある質問と注意点
削除失敗の原因
- ファイルまたはディレクトリが存在しない
- ディレクトリが空でない(ファイルまたはサブディレクトリを含む)
- 削除権限がない
- ファイルが他のプログラムによって使用されている
ファイルの存在確認
delete() を呼び出すdelete()前に、ファイルが存在するかどうかを確認することをお勧めします:
例
File file = new File("example.txt");
if(file.exists()) {
file.delete();
}
if(file.exists()) {
file.delete();
}
空でないディレクトリの削除
空でないディレクトリを削除する必要がある場合は、その中のすべてのファイルとサブディレクトリを再帰的に削除する必要があります:
例
import java.io.File;
public class DeleteDirectoryRecursive {
public static void deleteDirectory(File directory) {
if(directory.isDirectory()) {
File[] files = directory.listFiles();
if(files != null) {
for(File file : files) {
deleteDirectory(file);
}
}
}
directory.delete();
}
public static void main(String[] args) {
File dir = new File("my_folder");
deleteDirectory(dir);
}
}
public class DeleteDirectoryRecursive {
public static void deleteDirectory(File directory) {
if(directory.isDirectory()) {
File[] files = directory.listFiles();
if(files != null) {
for(File file : files) {
deleteDirectory(file);
}
}
}
directory.delete();
}
public static void main(String[] args) {
File dir = new File("my_folder");
deleteDirectory(dir);
}
}
代替方法
Java 7 以降では、java.nio.file.FilesFiles クラスのdelete()delete() メソッドを使用できます:
例
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class NioDeleteExample {
public static void main(String[] args) throws Exception {
Path path = Paths.get("example.txt");
Files.delete(path);
}
}
import java.nio.file.Path;
import java.nio.file.Paths;
public class NioDeleteExample {
public static void main(String[] args) throws Exception {
Path path = Paths.get("example.txt");
Files.delete(path);
}
}
NIO メソッドの利点
- より詳細な例外情報を提供します(例:
NoSuchFileException,DirectoryNotEmptyExceptionNoSuchFileException など) - より多くのファイル操作オプションをサポートします
- 通常はパフォーマンスが向上します
まとめ
File.delete()メソッドは Java でファイルまたは空のディレクトリを削除するための基本的なメソッドです。使用時には以下の点に注意する必要があります:
- ファイル/ディレクトリが存在することを確認する
- 十分な権限があることを確認する
- ディレクトリの場合は、空でなければ削除できません
- Java NIO の Files.delete() を
Files.delete()代替方法として検討してください
これらのメソッドを適切に使用することで、ファイルシステム内のファイルとディレクトリを効率的に管理できます。
その他の関連記事
Java File