程序比较简单,BFS使用队列,DFS使用递归。读者可以根据需要改变打印顺序,而且还可以试图求出指定目录下的某一扩展名的文件数量,添加一点正则表达式的语句。

import java.io.File;
import java.util.LinkedList;
import java.util.Queue;

public class BFS_SearchFiles {
    
public static void main(String args[]){
        Queue
<File> queue=new LinkedList<File>();
        queue.add(
new File("c:\\test"));
        
while(!queue.isEmpty()){
            File currentFile
=(File)queue.poll();
            System.out.println(
"路径 "+currentFile);
            String[] s
=currentFile.list();
            
for(int i=0;i<s.length;i++){
                File d
=new File(currentFile.getAbsolutePath()+File.separator+s[i]);
                
if(d.isFile())
                    System.out.println(
"文件 "+d);
                
else if(d.isDirectory())
                    queue.add(d);
            }

        }

    }

}


import java.io.File;

public class DFS_SearchFiles {
    
public static void main(String args[]){
        DFS_SearchFiles.Search(
"c:\\test");
    }

    
static void Search(String path){
        File file
=new File(path);
        
        
if(file.isDirectory()){
            System.out.println(
"目录 "+file.getPath());
            File[] files
=file.listFiles();
            
for(int i=0;i<files.length;i++){
                
if(files[i].isDirectory()){
                    Search(files[i].getPath());
                }

                
else if(files[i].isFile())
                    System.out.println(
"文件 "+files[i]);
            }

        }

    }

}