最近在學(xué)C#的文件系統(tǒng), 發(fā)現(xiàn)C#的文件系統(tǒng)貌似比java的東西少一點, 居然連刪除目錄都直接做好封裝了, 想到學(xué)java的時候還要自己寫遞歸刪除, 好像沒寫過非遞歸的,就在網(wǎng)上查了下, 關(guān)于非遞歸刪除目錄代碼沒幾個, 我就寫了一個,遞歸網(wǎng)上一大堆, 就不粘上來了. 下面是代碼非遞歸的方法:
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
|
package demo1; import java.io.File; import java.util.ArrayList; public class Demo1 { /** * 不使用遞歸刪除目錄 * @param args */ public static void main(String[] args) { deleteDirectory( "E:\\test" ); } public static void deleteDirectory(String rootPath) { //fileList模擬的是一個隊列 ArrayList<File> fileList = new ArrayList<File>(); //存儲文件和直接子目錄包含文件的目錄 //directoryList模擬的是一個棧 ArrayList<File> directoryList = new ArrayList<File>(); //存儲直接子目錄不包含文件的目錄 File root = new File(rootPath); if (!root.exists()){ System.out.println( "您輸入的不是目錄" ); return ; } if (root.isFile()){ root.delete(); System.out.println( "您輸入的是文件,已刪除成功" ); return ; } fileList.add( 0 , root); //第一次入隊列 while (fileList.size() > 0 ) { File dir = fileList.remove( 0 ); //模擬一個出隊列的過程 File[] files = dir.listFiles(); for ( int i = 0 ; i < files.length; i++) { if (files[i].isFile()) files[i].delete(); else fileList.add(files[i]); //模擬一個入隊列的過程 } directoryList.add(dir); //模擬一個壓棧的過程 } //倒序遍歷,模擬一個彈粘的過程 for ( int i = directoryList.size() - 1 ; i >= 0 ; i--) { directoryList.get(i).delete(); } if (!root.exists()){ System.out.println( "您輸入的是文件夾,已刪除成功" ); } } } |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。