实现代码一、
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删除空文件夹的实现代码,需要的朋友可以参考一下。