JAVA实现将磁盘中所有空文件夹进行删除的代码
作者:mdxy-dxy 发布时间:2022-09-01 04:59:41
标签:JAVA,删除,空文件夹
实现代码一、
import java.io.File;
import java.io.*;
public class DelNullDir {
public void ShowDir(File f){
for (File f1:f.listFiles()){
if(f1.isDirectory()){
ShowDir(f1);
//一直递归到最后的目录
if(f1.listFiles().length==0){
//如果是文件夹里面没有文件证明是空文件,进行删除
f1.delete();
}
}
}
}
/**
*
* 把磁盘中所有空的文件夹进行删除
*/
public static void main(String[] args) {
File f = new File("F:\\360CloudUI\\");
new DelNullDir().ShowDir(f);
}
}
实现代码二、
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Date;
/**
* Description:递归方式,扫描并删除磁盘中的空文件夹
*(C盘中的一些空文件夹是系统文件夹,删除多次后空文件夹数量不变,则停止此程序)
* */
public class DelEmptyFolders {
//空文件夹的绝对路径
private static StringBuffer paths;
//本次扫描的空文件夹的数量
private static int cnt;
public static void main(String[] args) {
boolean flag = true;
do{
cnt = 0;
paths = new StringBuffer();
long start = new Date().getTime();
System.out.println("正在扫描......");
//要扫描的磁盘
File disk = new File("C:/");
//日志文件的位置
File log = new File("D:/scanLog_C.txt");
try {
//扫描磁盘
scanEmptyFolders(disk);
//空文件夹数大于0时,将文件夹的绝对路径记录到日志中并再扫描一次;否则停止扫描
if(cnt > 0){
fileWrite(paths.toString(), log);
}else{
flag = false;
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
long end = new Date().getTime();
System.out.println("本次扫描完毕,耗时:"+(end-start)/1000+" 秒,共删除:"+cnt+" 个空文件夹!\n");
}while(flag);
}
/**
* TODO:递归扫描空文件夹
* @throws UnsupportedEncodingException
* */
private static void scanEmptyFolders(File file) throws UnsupportedEncodingException{
if(file != null && file.isDirectory()){
File[] files = file.listFiles();
//非空文件夹
if(files != null){
if(files.length > 0){
for (File temp : files) {
scanEmptyFolders(temp);
}
}else{
System.out.println(file.getAbsolutePath());
//记录日志
paths.append(new String((file.getAbsolutePath()+"\r\n").getBytes(),"UTF-8"));
cnt++;
//删除空文件夹
file.delete();
}
}
}
}
/**
* TODO:将字符串写入文本文件
* @throws IOException
* */
private static void fileWrite(String info,File file) throws IOException{
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(info.getBytes());
bos.flush();
bos.close();
fos.close();
}
}


猜你喜欢
- 实现原理在之前的文章中,我们介绍了普通的帐号密码登录的方式: SpringBoot + Spring Security 基本使用及个性化登录
- Csv文件基本的属性csv文件可以在excel或者wps中以表格形式打开,本质上是每一列以,逗号为分隔符的一种格式,在C#中操作可以把他当做
- 1. 可空类型修饰符 ?// 引用类型能用空引用来表示一个不存在的值,但是值类型不能。例如:string str = null;int i
- 本文实例讲述了C#实现的阴历阳历互相转化类。分享给大家供大家参考,具体如下:最近郁闷地发现网上现有的相当一部分万年历上干支纪年的算法都是错误
- android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析。android的程序基于java开发,当我们接上调试器
- 上一篇:C# Redis学习系列一:Redis的认识、下载、安装、使用一.redis 设置密码使用下载好的 redis-cli.exe指令:
- 提要本节继续给大家带来是显示提示信息的第三个控件AlertDialog(对话框),同时它也是其他Dialog的的父类!比如ProgressD
- 一、场景描述接《Java设计模式(一)工厂模式》工厂模式有一缺点,就是破坏了类的封闭性原则。例如,如果需要增加Word文件的数据采集,此时按
- 前言作为大数据家族中的重要一员,在大数据以及海量数据存储方面,hbase具有重要的地方,本篇将从java对hbase的操作上,进行详细的说明
- 摘要:其实两种方法归结起来看还是一种,都是利用Thread的构造器进行创建,区别就是一种是无参的,一种是有参的。一、继承Thread线程类:
- 基于C#的Aforge类调用简单示例,供大家参考,具体内容如下由题,本程序是使用Aforge类库调用摄像头的demo。功能:1.预览2.前后
- 本文实例讲述了Android简单创建一个Activity的方法。分享给大家供大家参考,具体如下:1) 创建一个android项目填写项目信息
- 如论实施敏捷的团队,或者实施 DevOps 的团队,通过自动化测试提高测试效率和软件质量都是其共同的选择。UI 自动化测试是自动化化测试当中
- log4j配置失效日志中打印Debug信息最近发布项目的时候发现控制台打印的日志较往常多了很多,仔细一看,debug和info信息也赫然在列
- 释一:属性的访问器包含与获取(读取或计算)或设置(写)属性有关的可执行语句。访问器声明可以包含 get 访问器或 set 访问器,或者两者均
- 今天Android Studio提示我这个东东。。。为了加快Gradle的构建速度,我点击了“Update”。。。之后工程一片红,全是R文件
- 1. 什么是单例模式单例模式指的是在应用整个生命周期内只能存在一个实例。单例模式是一种被广泛使用的设计模式。他有很多好处,能够避免实例对象的
- Unity中的PostProcessBuild:深入解析与实用案例在Unity游戏开发中,我们经常需要在构建完成后对生成的应用程序进行一些额
- 介绍Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式
- 只需要实现下面2段代码即可实现对网络连接状态的监听,千万别忘了在Manifest.xml里面添加网络访问权限哦。 1、定义广播 * Net