Автор оригинала: Pankaj Kumar.
Сегодня мы рассмотрим примеры Java delete file и java delete directory. Ранее мы узнали, как создать файл на java .
Java удалить файл
- Метод удаления файлов Java() может использоваться для удаления файлов или пустой директории/папки в java. Метод удаления файлов Java возвращает значение true, если файл удаляется, и возвращает значение false, если файл не существует.
- Если вы пытаетесь удалить каталог, он проверяет метод удаления файла java (), проверяет, пуст ли он или нет. Если каталог пуст, он удаляется, иначе
метод delete()
ничего не делает и возвращает false. Поэтому в этом случае мы должны рекурсивно удалить все файлы, а затем пустой каталог. - Другим способом удаления непустого каталога является использование метода
Files.walkFileTree ()
. В этом методе мы можем обработать все файлы один за другим и вызвать метод удаления для отдельных файлов.
Пример удаления файла Java
Давайте посмотрим пример программы удаления файлов java.
package com.journaldev.files; import java.io.File; public class DeleteFileJava { /** * This class shows how to delete a File in Java * @param args */ public static void main(String[] args) { //absolute file name with path File file = new File("/Users/pankaj/file.txt"); if(file.delete()){ System.out.println("/Users/pankaj/file.txt File deleted"); }else System.out.println("File /Users/pankaj/file.txt doesn't exist"); //file name only file = new File("file.txt"); if(file.delete()){ System.out.println("file.txt File deleted from Project root directory"); }else System.out.println("File file.txt doesn't exist in the project root directory"); //relative path file = new File("temp/file.txt"); if(file.delete()){ System.out.println("temp/file.txt File deleted from Project root directory"); }else System.out.println("File temp/file.txt doesn't exist in the project root directory"); //delete empty directory file = new File("temp"); if(file.delete()){ System.out.println("temp directory deleted from Project root directory"); }else System.out.println("temp directory doesn't exist or not empty in the project root directory"); //try to delete directory with files file = new File("/Users/pankaj/project"); if(file.delete()){ System.out.println("/Users/pankaj/project directory deleted from Project root directory"); }else System.out.println("/Users/pankaj/project directory doesn't exist or not empty"); } }
Ниже приведены выходные данные, когда мы впервые выполняем приведенный выше пример программы удаления файлов java.
/Users/pankaj/file.txt File deleted file.txt File deleted from Project root directory temp/file.txt File deleted from Project root directory temp directory deleted from Project root directory /Users/pankaj/project directory doesn't exist or not empty
Обратите внимание, что временный каталог имел file.txt и сначала он был удален, а затем каталог был пуст и успешно удален,/Users/pankaj/project не был пустым и, следовательно, не удалялся.
При последующем запуске той же программы вывод будет:
File /Users/pankaj/file.txt doesn't exist File file.txt doesn't exist in the project root directory File temp/file.txt doesn't exist in the project root directory temp directory doesn't exist or not empty in the project root directory /Users/pankaj/project directory doesn't exist or not empty
Обратите внимание , что в отличие от createNewFile (), метод delete не вызывает исключения IOException.
Java удалить каталог
Ниже приведена простая программа, показывающая, как удалить непустой каталог. Это будет работать, если ваш каталог содержит только файлы.
package com.journaldev.files; import java.io.File; public class JavaDeleteDirectory { public static void main(String[] args) { File dir = new File("/Users/pankaj/log"); if(dir.isDirectory() == false) { System.out.println("Not a directory. Do nothing"); return; } File[] listFiles = dir.listFiles(); for(File file : listFiles){ System.out.println("Deleting "+file.getName()); file.delete(); } //now directory is empty, so we can delete it System.out.println("Deleting Directory. Success = "+dir.delete()); } }
Java рекурсивно удаляет каталог
Ранее нам приходилось писать код на основе рекурсии для удаления каталога с вложенными каталогами. Но с Java 7 мы можем сделать это с помощью класса Files . Ниже приведен код, который вы должны использовать для удаления каталога. Он также заботится об удалении вложенных каталогов.
package com.journaldev.files; import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; public class JavaDeleteDirectoryRecursively { public static void main(String[] args) throws IOException { Path directory = Paths.get("/Users/pankaj/log"); Files.walkFileTree(directory, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) throws IOException { Files.delete(file); // this will work because it's always a File return FileVisitResult.CONTINUE; } @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { Files.delete(dir); //this will work because Files in the directory are already deleted return FileVisitResult.CONTINUE; } }); } }
Это все для примеров java delete file и java delete directory.
Ссылка: Java NIO Файлы класса API Doc