程序比較簡單,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]);
            }

        }

    }

}