2 ways to traverse a folder in Java: A. Do not use recursion: Import Java.io.file;import Java.util.linkedlist;public class FileSystem {public static void main (string[] args) { Long a = System.currenttimemillis (); LinkedList list = new LinkedList (); File dir = new file ("c:\\java\\"); File file[] = Dir.listfiles (); for (int i = 0; i < file.length; i++) {if (File[i].isdirectory ()) List.add (File[i]); Else System.out.println (File[i].getabsolutepath ()); } File tmp; while (!list.isempty ()) {tmp = List.removefirst (); if (Tmp.isdirectory ()) {file = Tmp.listfiles (); if (file = = null) continue; for (int i = 0; i < file.length; i++) {if (File[i].isdirectory ()) List.add (f Ile[i]); Else System.out.println (File[i].getabsolutepath ()); } } else {System.out.println (Tmp.getabsolutepath ()); }} System.out.println (System.currenttimemillis ()-a); }} |
|
B. Using recursion:
Import Java.io.file;import Java.util.arraylist;public class FileSystem1 {private static ArrayList filelist = new ArrayList (); public static void Main (string[] args) {Long a = System.currenttimemillis (); Refreshfilelist ("C:\\java"); System.out.println (System.currenttimemillis ()-a); public static void Refreshfilelist (String strpath) {file Dir = new File (strpath); file[] files = dir.listfiles (); if (files = = null) return; for (int i = 0; i < files.length; i++) {if (Files[i].isdirectory ()) {refreshfilelist (file S[i].getabsolutepath ()); } else {String strFileName = Files[i].getabsolutepath (). toLowerCase (); SYSTEM.OUT.PRINTLN ("---" +strfilename); Filelist.add (Files[i].getabsolutepath ()); }}} Conclusion: After testing, using recursive method B has a relatively good performance.
Java traverse files in folder