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 }
时间: 2024-10-10 14:50:46