1:非递归方式(有点类似二叉树的非递归遍历,采用链表来存储遍历到的文件夹,如果是文件就直接输出)
public void traverseFile(String path){
File[] files;
File file=new File(path);
if(file.exits()){
LinkedList<File> list=new LinkedList<File>();
list.add(file);
while(!list.isEmpty()){
File file2=list.removeFirst();
files=file2.listFiles();
for(File f:files){
if(f.isDirectory()){
System.out.println("文件夹:"+f.getAbsolutePath());
list.add(f);
}else{
System.out.println("文件:"+f.getAbsolutePath());
}
}
}
}else{
System.out.println("文件不存在!");
}
}
2:递归方式
public void traverseFile(String path){
File file=new File(path);
if(file.exits()){
File[] f=file.listFiles();
for(File f2:f){
if(f2.isDirectory()){
System.out.println("文件夹:"+f.getAbsolutePath());
traverseFile(f2.getAbsolutePath());
}else{
System.out.println("文件:"+f.getAbsolutePath());
}
}
}else{
System.out.println("文件不存在!");
}
}