使用遞迴方法實現
1 import java.io.File; 2 import java.util.ArrayList; 3 public class FileSystem1 { 4 private static ArrayList<String> filelist = new ArrayList<String>(); 5 6 public static void main(String[] args) { 7 8 long a = System.currentTimeMillis(); 9 refreshFileList("c:"+File.separator);
10 System.out.println(System.currentTimeMillis() - a);11 }12 public static void refreshFileList(String strPath) { 13 File dir = new File(strPath); 14 File[] files = dir.listFiles(); 15 16 if (files == null) 17 return; 18 for (int i = 0; i < files.length; i++) { 19 if (files[i].isDirectory()) { 20 refreshFileList(files[i].getAbsolutePath()); 21 } else { 22 String strFileName = files[i].getAbsolutePath().toLowerCase();23 System.out.println("---"+strFileName);24 filelist.add(files[i].getAbsolutePath()); 25 } 26 } 27 }28 }
使用非遞迴方法實現
1 import java.io.File; 2 import java.util.LinkedList; 3 public class FileSystem { 4 public static void main(String[] args) { 5 6 long a = System.currentTimeMillis(); 7 8 LinkedList<File> list = new LinkedList<File>(); 9 //擷取系統硬碟符10 File[] files = File.listRoots();11 12 for(int j=0;j<files.length;j++)13 {14 File file[] = files[j].listFiles();15 for (int i = 0; i < file.length; i++) {16 if (file[i].isDirectory())17 list.add(file[i]);18 else19 System.out.println(file[i].getAbsolutePath());20 }21 File tmp;22 while (!list.isEmpty()) {23 tmp = list.removeFirst();24 if (tmp.isDirectory()) {25 file = tmp.listFiles();26 if (file == null)27 continue;28 for (int i = 0; i < file.length; i++) {29 if (file[i].isDirectory())30 list.add(file[i]);31 else32 System.out.println(file[i].getAbsolutePath());33 }34 } else {35 System.out.println(tmp.getAbsolutePath());36 }37 }38 } 39 System.out.println(System.currentTimeMillis() - a);40 }41 }