Import java. Io. file;
Import java. util. Collections list;
Public class filesystem {
Public static int num;
Public static void main (string [] ARGs ){
Long A = system. currenttimemillis ();
// String Path = "C :";
Num = 0;
String [] lists = {"C:", "d :"};
/*
For (INT I = 0; I <lists. length; I ++ ){
File file = new file (lists [I]);
Scandirrecursion (File );
*/
For (INT I = 0; I <lists. length; I ++ ){
Scandirnorecursion (lists [I]);
}
System. Out. Print ("Total number of files:" + num );
System. Out. Print ("Total time consumed :");
System. Out. println (system. currenttimemillis ()-);
}
// Non-recursion
Public static void scandirnorecursion (string path ){
Jsonlist list = new jsonlist ();
File dir = new file (PATH );
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 ());
Num ++;
}
}
File TMP;
While (! List. isempty ()){
TMP = (File) List. removefirst (); // The first directory
If (TMP. isdirectory ()){
File = TMP. listfiles ();
If (file = NULL)
Continue;
For (INT I = 0; I <file. length; I ++ ){
If (file [I]. isdirectory ())
List. Add (file [I]); // The Directory is added to the directory list.
Else {
System. Out. println (file [I]);
Num ++;
}
}
} Else {
System. Out. println (TMP );
Num ++;
}
}
}
// Recursion
Public static void scandirrecursion (File file ){
Try {
If (file. Canread ()){
If (file. isdirectory ()){
String [] files = file. List ();
If (files! = NULL ){
For (INT I = 0; I <files. length; I ++ ){
Scandirrecursion (new file (file, files [I]);
}
}
} Else {
// If (file. getname (). endswith ("ppt "))
System. Out. println (File );
Num ++;
}
}
} Catch (exception e ){
E. printstacktrace ();
}
}
}
Test:
(1) recursion: Total number of files: 189497 total time consumed: 39328
(2) Non-recursion: Total number of files: 189432 total time consumed: 37469
Non-recursion is better