详细情况看代码吧,我这个代码有个BUG,扫描U盘的时候可能会报空指针异常,希望大虾指点下
import java.io.File; import java.util.ArrayDeque; public class FileListDemo { public static void main(String[] args) { File f1 = new File("E:\"); //深度搜索 getPathDFS(f1); System.out.println("======================"); //广度搜索 getPathBFS(f1); } private static void getPathBFS(File f1) { //输出第一层目录 System.out.println(f1); //运用队列进行广度搜索 ArrayDeque<File> deque = new ArrayDeque<File>(); //第一个File实例入队 deque.offer(f1); //队列为空时停止 while(!deque.isEmpty()){ //取队头 File[] ff = deque.peek().listFiles(); //出队 deque.poll(); for(int i=0;i<ff.length;i++){ //如果是文件夹入队 if(ff[i].isDirectory()){ System.out.println(ff[i]); deque.addLast(ff[i]); }else{ System.out.println(ff[i]); } } } } private static void getPathDFS(File f1) { System.out.println(f1.getName()); File[] file = f1.listFiles(); for(int i=0;i<file.length;i++){ //如果是个文件夹就继续搜索 if(file[i].isDirectory()){ getPathDFS(file[i]); }else{ //不是文件夹就直接输出 System.out.println(file[i]); } } } }