首页 > 代码库 > 删除文件、文件夹、子目录的工具类

删除文件、文件夹、子目录的工具类

  1 package com.wdxc.util;
  2 
  3 import java.io.File;
  4 
  5 /**
  6  * 文件删除
  7  * 包括文件夹包含文件夹、文件的情况
  8  * @author wangbo
  9  *
 10  */
 11 public class FileDelUtil {
 12 
 13 
 14     /** 
 15      * 根据路径删除指定的目录或文件,无论存在与否 
 16      * @param sPath  要删除的目录或文件路径 
 17      * @return 删除成功返回 true,否则返回 false。 
 18      */  
 19     public static boolean DeleteFolder(String sPath) {  
 20         File file = new File(sPath);  
 21         //判断目录或文件是否存在  
 22         if (!file.exists()) {//不存在返回 false  
 23             return false;  
 24         } else {  
 25             //判断是否为文件  
 26             if (file.isFile()) {//为文件时调用删除文件方法  
 27                 return deleteFile(sPath);  
 28             } else {//为目录时调用删除目录方法  
 29                 return deleteDirectory(sPath);  
 30             }  
 31         }  
 32     }  
 33     /** 
 34      * 删除单个文件 
 35      * @param sPath 被删除文件的文件名 
 36      * @return 单个文件删除成功返回true,否则返回false 
 37      */  
 38     public static boolean deleteFile(String sPath) {  
 39         File file = new File(sPath);  
 40         //路径为文件且不为空则进行删除  
 41         if (file.isFile() && file.exists()) {  
 42             file.delete();  
 43             return true;  
 44         }  
 45         return false; 
 46     }  
 47     
 48 
 49     /** 
 50      * 删除目录(文件夹)以及目录下的文件 
 51      * @param  sPath 被删除目录的文件路径 
 52      * @return  目录删除成功返回true,否则返回false 
 53      */  
 54     public static boolean deleteDirectory(String sPath) {  
 55         //如果sPath不以文件分隔符结尾,自动添加文件分隔符  
 56         if (!sPath.endsWith(File.separator)) {  
 57             sPath = sPath + File.separator;  
 58         }  
 59         File dirFile = new File(sPath);  
 60         //如果dir对应的文件不存在,或者不是一个目录,则退出  
 61         if (!dirFile.exists() || !dirFile.isDirectory()) {  
 62             return false;  
 63         }  
 64         boolean flag = true;  
 65         //删除文件夹下的所有文件(包括子目录)  
 66         File[] files = dirFile.listFiles();  
 67         for (int i = 0; i < files.length; i++) {  
 68             if (files[i].isFile()) {//删除子文件  
 69                 flag = deleteFile(files[i].getAbsolutePath());  
 70                 if (!flag) break;  
 71             }else { //删除子目录 
 72                 flag = deleteDirectory(files[i].getAbsolutePath());  
 73                 if (!flag) break;  
 74             }  
 75         }  
 76         if (!flag) return false;  
 77         //删除当前目录  
 78         if (dirFile.delete()) {  
 79             return true;  
 80         } else {  
 81             return false;  
 82         }  
 83     }  
 84     
 85 
 86     /**
 87      * 测试方法
 88      * @param args
 89      */
 90     public static void main(String[] args) { 
 91         String path = "D:\\aaa\\bbb\\Ab1";
 92         // 验证字符串是否为正确路径名的正则表达式  
 93         String regex = "[A-Za-z]:\\\\[^:?\"><*]*";  
 94         // 通过 sPath.matches(matches) 方法的返回值判断是否正确  
 95         if (path.matches(regex)) {
 96             boolean result = DeleteFolder(path);  
 97             System.out.println(result);
 98         }else {
 99             System.out.println("路径不匹配!");  
100         }
101     }  
102 }

 

删除文件、文件夹、子目录的工具类