Java删除文件夹下所有文件的方法

您所在的位置:网站首页 java删除文本内容 Java删除文件夹下所有文件的方法

Java删除文件夹下所有文件的方法

2023-10-21 12:44| 来源: 网络整理| 查看: 265

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