在Java中,有两种方式可以实现深度遍历文件目录。
一、递归
public class Demo1 {
public static void main(String[] args) {
File root = new File("F:\\Apesource-java");
showFiles1(root);
}
private static void showFiles1(File dir) {
System.out.println(dir);
//获取当前目录下的所有子文件或子目录
File[] listFiles = dir.listFiles();
//遍历所有子目录或子文件
if(listFiles != null) {
for(File f : listFiles) {
if(f.isDirectory()) {
//如果是目录,递归调用
showFiles1(f);
}else if(f.isFile()) {
//如果是文件,打印文件内容
System.out.println(f);
}
}
}
}
}
二、使用Files工具类
public class Demo05 {
public static void main(String[] args) {
File root = new File("F:\\Apesource-java");
showFiles2(root);
}
private static void showFiles2(File dir) {
Path start = dir.toPath();
try {
//参数1:start代表开始路径
//参数2:FileVisitor接口实现类对象(提供SimpleFileVisitor实现子类)
Files.walkFileTree(start, new SimpleFileVisitor<Path>() {
//处理目录
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
// 处理文件
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println(file);
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}