Java删除文件夹下所有文件的方法 |
您所在的位置:网站首页 › java删除文本内容 › Java删除文件夹下所有文件的方法 |
1.使用FileUtils类
来自 Apache Commons IO的FileUtils类提供了几个方便的文件操作实用程序。您可以使用该FileUtils.cleanDirectory()方法递归删除目录中的所有文件和子目录,而不删除目录本身。 import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File directory = new File("/path/to/dir"); FileUtils.cleanDirectory(directory); } } 要递归删除目录及其中的所有内容,您可以使用该FileUtils.deleteDirectory()方法。 import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File directory = new File("/path/to/dir"); FileUtils.deleteDirectory(directory); } } 或者,您可以使用该FileUtils.forceDelete()方法删除一个目录和所有子目录。 import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { File directory = new File("/path/to/dir"); FileUtils.forceDelete(directory); } } 2.使用File.delete()方法该File.delete()方法删除由指定路径名表示的文件或目录。有许多方法可以有条件地删除使用它的目录中的文件和子目录。 例如,以下解决方案仅删除主目录中的文件,所有子目录保持不变。 import java.io.File; import java.util.Objects; public class Main { public static void main(String[] args) { File directory = new File("/path/to/dir"); for (File file: Objects.requireNonNull(directory.listFiles())) { if (!file.isDirectory()) { file.delete(); } } } } 如果您使用 Java 8 或更高版本,则可以使用: import java.io.File; import java.util.Arrays; import java.util.Objects; import java.util.function.Predicate; public class Main { public static void deleteDirectory(File directory) { Arrays.stream(Objects.requireNonNull(directory.listFiles())) .filter(Predicate.not(File::isDirectory)) .forEach(File::delete); } public static void main(String[] args) { File directory = new File("/path/to/dir"); deleteDirectory(directory); } } 您可以轻松扩展解决方案以递归删除目录中的所有文件和子目录。请注意,File.delete()当且仅当目录为空时,您可以使用该方法删除目录。 import java.io.File; import java.util.Objects; public class Main { public static void deleteDirectory(File directory) { for (File file: Objects.requireNonNull(directory.listFiles())) { if (file.isDirectory()) { deleteDirectory(file); } else { file.delete(); } } } public static void main(String[] args) { File directory = new File("/path/to/dir"); deleteDirectory(directory); } } 这是使用 Stream API 的版本。它利用该Files.walk()方法并删除目录中的所有文件和子目录以及目录本身。 import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Comparator; public class Main { public static void deleteDirectory(Path directory) throws IOException { Files.walk(directory) .sorted(Comparator.reverseOrder()) .map(Path::toFile) .forEach(File::delete); } public static void main(String[] args) throws IOException { Path directory = Path.of("/path/to/dir"); deleteDirectory(directory); } } 如果您需要从目录及其所有子目录中删除“仅文件”,您可以执行以下操作: import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; public class Main { public static void deleteDirectory(File directory) throws IOException { Files.walk(directory.toPath()) .filter(Files::isRegularFile) .map(Path::toFile) .forEach(File::delete); } public static void main(String[] args) throws IOException { File directory = new File("/path/to/dir"); deleteDirectory(directory); } } 3.自写删除方法方法一: /** * 删除指定文件夹下的全部内容 * @param file */ public static void remove(File file) { File[] files = file.listFiles();//将file子目录及子文件放进文件数组 if (files != null) {//如果包含文件进行删除操作 for (int i = 0; i < files.length; i++) { if (files[i].isFile()) {//删除子文件 files[i].delete(); } else if (files[i].isDirectory()) {//通过递归方法删除子目录的文件 remove(files[i]); } files[i].delete();//删除子目录 } } } //删除文件及文件夹方法 public static void delFile(File index){ if (index.isDirectory()){ File[] files = index.listFiles(); for (File in: files) { delFile(in); } } index.delete(); //出现几次删除成功代表有几个文件和文本文件 System.out.println("删除成功"); }以上就是关于“Java删除文件夹下所有文件的方法”介绍,希望对大家的学习能够有所帮助哦。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |