Java操作文件夹的工具类

简介:

Java操作文件夹的工具类

复制代码
  1 import java.io.File;
  2 
  3 public class DeleteDirectory {
  4     
  5     /**
  6     * 删除单个文件
  7     * @param fileName 要删除的文件的文件名
  8     * @return 单个文件删除成功返回true,否则返回false
  9     */    
 10     public static boolean deleteFile(String fileName) {
 11         File file = new File(fileName);
 12         // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
 13         if (!file.exists()){
 14             return true;
 15         }
 16                 
 17         // 如果file不是一个文件
 18         if(!file.isFile()){
 19             return false;
 20         }
 21             
 22         boolean flag = file.delete();
 23         if( !flag ){
 24             System.gc();
 25             flag = file.delete() ;
 26         }
 27         return flag;
 28     }
 29     
 30     /**
 31     * 只删除目录下的文件
 32     * @param dir 要删除的目录的文件路径
 33     * @return 目录删除成功返回true,否则返回false
 34     */
 35     public static boolean deleteDirectory(String dir) {
 36         // 如果dir不以文件分隔符结尾,自动添加文件分隔符
 37         if (!dir.endsWith(File.separator))
 38             dir = dir + File.separator;
 39         File dirFile = new File(dir);
 40         // 如果dir对应的文件目录不存在
 41         if ((!dirFile.exists())) {
 42             //logger.info("目录:" + dir + "不存在!");
 43             return true;
 44         }
 45         // 如果dir不是一个目录
 46         if(!dirFile.isDirectory()){
 47             return false;
 48         }
 49         boolean flag = true;
 50         // 删除文件夹中的所有文件包括子目录
 51         File[] files = dirFile.listFiles();
 52         for (int i = 0; i < files.length; i++) {
 53             // 删除子文件
 54             if (files[i].isFile()) {
 55                 flag = deleteFile(files[i].getAbsolutePath());
 56                 if (!flag)
 57                     break;
 58             }
 59         }
 60         return flag;
 61     }
 62 
 63     /**
 64     * 递归删除目录及目录下的文件
 65     * @param dir 要删除的目录的文件路径
 66     * @return 目录删除成功返回true,否则返回false
 67     */
 68     public static boolean deleteDirectoryRecursion(String dir) {
 69         // 如果dir不以文件分隔符结尾,自动添加文件分隔符
 70         if (!dir.endsWith(File.separator))
 71             dir = dir + File.separator;
 72         File dirFile = new File(dir);
 73         // 如果dir对应的文件目录不存在
 74         if ((!dirFile.exists())) {
 75             //logger.info("目录:" + dir + "不存在!");
 76             return true;
 77         }
 78         
 79         // 如果dir不是一个目录
 80         if(!dirFile.isDirectory()){
 81             return false;
 82         }
 83         boolean flag = true;
 84         // 删除文件夹中的所有文件包括子目录
 85         File[] files = dirFile.listFiles();
 86         for (int i = 0; i < files.length; i++) {
 87             // 删除子文件
 88             if (files[i].isFile()) {
 89                 flag = deleteFile(files[i].getAbsolutePath());
 90                 if (!flag)
 91                     break;
 92             }
 93             // 删除子目录
 94             else if (files[i].isDirectory()) {
 95                 flag = deleteDirectoryRecursion(files[i].getAbsolutePath());
 96                 if (!flag)
 97                     break;
 98             }
 99         }
100         if (!flag) {
101             //logger.error("删除目录" + dir +"失败!");
102             return false;
103         }
104         // 删除当前目录
105         flag = dirFile.delete();
106         //logger.info("删除目录" + dir + " "+flag);
107         return flag;        
108     }
109     
110 }
复制代码

 


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5762399.html,如需转载请自行联系原作者

相关文章
|
存储 Java
Java扫描某个文件夹且要保证不重复扫描,如何实现?
【10月更文挑战第18天】Java扫描某个文件夹且要保证不重复扫描,如何实现?
277 3
|
9月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
285 0
|
12月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
377 34
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
187 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
监控 Java
Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
【10月更文挑战第13天】Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
492 1
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
843 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
Java
Java 些许公共工具类
Java 些许公共工具类
90 1
|
缓存 前端开发 Java
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
【8月更文挑战第10天】java基础巩固,工具类的封装
98 1
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
221 8
|
监控 Java
Java文件夹复制解决方案:优化大文件与大量数据的处理
Java中复制文件夹及其内容,尤其是当处理大文件或文件夹(如几个GB)时,需要特别注意内存使用和性能优化。以下是一个详细的指导,包括如何避免内存溢出异常,并确保复制过程的高效性。
293 1