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);
    }
}

以上就是关于“Java删除文件夹下所有文件的方法”介绍,希望对大家的学习能够有所帮助哦。

  • 12
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值