【发布时间】:2011-12-18 00:16:54
【问题描述】:
对于我正在尝试创建目录树的程序。所以我程序的第一部分使用Paths来遍历我需要的目录:
public static void main(String[] args) throws IOException {
Path startingDir = Paths.get("/home/somedirectory");
PrintFiles pf = new PrintFiles();
Files.walkFileTree(startingDir, pf);
}
还有 PrintFiles 程序(我直接从关于如何使用路径行走一棵树的指南中复制了这个)http://download.oracle.com/javase/tutorial/essential/io/walk.html:
public static class PrintFiles extends SimpleFileVisitor<Path> {
//Print information about each type of file.
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attr) {
if (attr.isSymbolicLink()) {
System.out.format("Symbolic link: %s ", file);
} else if (attr.isRegularFile()) {
System.out.format("Regular file: %s ", file);
} else {
System.out.format("Other: %s ", file);
}
System.out.println("(" + attr.size() + "bytes)");
return CONTINUE;
}
//Print each directory visited.
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
System.out.format("Directory: %s%n", dir);
return CONTINUE;
}
public FileVisitResult visitFileFailed(Path file, IOException exc) {
System.err.println(exc);
return CONTINUE;
}
}
我还有一个通用的树程序,它创建一个具有任意数量节点的树,具有典型的添加节点删除节点等功能(我不打算发布代码,因为它很长而且我不认为它真的必要的,因为它是一个非常标准的实现)。
我的问题是我该如何做一些事情,我可以创建一个通用树来代表我的特定目录的目录树?我对 Path 和 File 库的工作方式并不十分熟悉。
谢谢, 凯文
【问题讨论】:
-
我会考虑使用 apache commons io fileutils 来遍历目录
标签: java path tree directory traversal