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("文件不存在!"); } }