java file删除目录下的文件及文件夹

本文介绍了一个用于递归删除指定目录及其子目录下所有文件的方法。该方法通过遍历文件列表,逐一删除文件和调用自身来处理子目录,最终移除空目录。
/**
     * 删除指定目录和子目录下的所有文件
     * @author Bian Jiang
     * @since 2008.06.03
     * @param filePath
     */
    public static void delAllFile(String filePath{
        log.debug("开始删除文件:" + filePath);
        try {
            File file = new File(filePath);
            File[] fileList = file.listFiles();
            String dirPath = null;
            if(fileList != null{
                for(int i = 0 ; i < fileList.lengthi++) {
                    if(fileList[i].isFile()) {
                        fileList[i].delete();
                    }
                    if(fileList[i].isDirectory()){  
                        dirPath = fileList[i].getPath();
                        delAllFile(dirPath);
                    }
                }
                file.delete();
            }
        } catch (Exception ex{
            log.error("删除文件失败:" + filePath);
        }
    }
Java 中,有两种常见的删除目录下子文件夹文件的实现方法: #### 方法一:使用递归删除文件及子文件 以下是一个示例代码,展示了如何递归删除一个目录下的所有文件和子目录: ```java import org.apache.log4j.LogFactory; import org.apache.log4j.Logger; import java.io.File; public class Demo { // 日志打印 private static final Logger LOGGER = LogFactory.getLog(Demo.class); public static Boolean deleteFile(File file) { // 判断文件不为 null文件目录存在 if (file == null || !file.exists()) { LOGGER.info("文件目录不存在,请检查文件是否存在以及文件路径是否正确"); return false; } // 获取目录下子文件 File[] files = file.listFiles(); // 遍历该目录下的文件对象 for (File f : files) { // 判断子目录是否存在子目录,如果是文件删除 if (f.isDirectory()) { // 递归删除目录下的文件 deleteFile(f); } else { // 文件删除 f.delete(); // 打印文件名 LOGGER.info("删除文件名:" + f.getName()); } } // 删除文件夹 // file.delete(); return true; } public static void main(String[] args) { // 删除一个文件夹下的所有文件(包括子目录内的文件) File file = new File("D:\\test");// 要删除文件目录的绝对路径 if (deleteFile(file)) { LOGGER.info("文件删除成功!"); } } } ``` 注:把 `file.delete();` 注释掉不会删除文件夹,只会删除文件夹内所有的子文件夹文件。如果有需要可以放开测试 [^1]。 #### 方法二:删除目录文件夹)以及目录下的文件 ```java import java.io.File; public class DirectoryDeleter { /** * 删除目录文件夹)以及目录下的文件 * @param sPath 被删除目录文件路径 * @return 目录删除成功返回 true,否则返回 false */ public boolean deleteDirectory(String sPath) { // 如果 sPath 不以文件分隔符结尾,自动添加文件分隔符 if (!sPath.endsWith(System.getProperty("file.separator"))) { sPath = sPath + System.getProperty("file.separator"); } File dirFile = new File(sPath); // 如果 dir 对应的文件不存在,或者不是一个目录,则退出 if (!dirFile.exists() || !dirFile.isDirectory()) { return false; } boolean flag = true; // 删除文件夹下的所有文件(包括子目录) File[] files = dirFile.listFiles(); for (int i = 0; i < files.length; i++) { // 删除文件 if (files[i].isFile()) { flag = deleteFile(files[i].getAbsolutePath()); if (!flag) break; } // 删除目录 else { flag = deleteDirectory(files[i].getAbsolutePath()); if (!flag) break; } } if (!flag) return false; // 删除当前目录 if (dirFile.delete()) { return true; } else { return false; } } public boolean deleteFile(String filePath) { File file = new File(filePath); return file.exists() && file.delete(); } } ``` 可以使用以下方式调用 `deleteDirectory` 方法: ```java public class Main { public static void main(String[] args) { DirectoryDeleter deleter = new DirectoryDeleter(); boolean result = deleter.deleteDirectory("your_directory_path"); System.out.println("删除结果: " + result); } } ``` 以上代码实现了删除指定目录及其所有子目录文件的功能 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值