实现代码一、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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);
}
}
|
实现代码二、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
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();
}
}
|
以上就是JAVA删除空文件夹的实现代码,需要的朋友可以参考一下。