import java.io.File;
import java.util.Stack;
public class PrintDir {
public static void main(String args[]){
File dir = new File("D://");
Long t1 = System.currentTimeMillis();
printDir1(dir);
Long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
printDir2(dir);
System.out.println(System.currentTimeMillis()-t2);
}
/**
* 递归打印文件目录及文件名
* @param dir
*/
public static void printDir1(File dir){
System.out.println(dir.getAbsolutePath());
String [] res = dir.list();
for(String str: res){
File file = new File(dir,str);
if(file.isDirectory()){
printDir1(file);
}else{
System.out.println(file.getAbsolutePath());
}
}
}
/**
* 用stack消除递归打印文件目录及文件名
* @param dir
*/
public static void printDir2(File dir){
Stack stack = new Stack();
stack.push(dir);
while(!stack.isEmpty()){
File f = (File) stack.pop();
System.out.println(f.getAbsolutePath());
String [] ss = f.list();
for(String ts:ss){
File file = new File(f,ts);
if(file.isDirectory()){
stack.push(file);
}else{
System.out.println(file.getAbsolutePath());
}
}
}
}
}