java扫描所在文件夹_如何在Java中扫描文件夹?

不知道你想如何表示树?无论如何,这里有一个例子,使用递归扫描整个子树。文件和目录被视为一样。注意,

File.listFiles()对非目录返回null。

public static void main(String[] args) {

Collection all = new ArrayList();

addTree(new File("."), all);

System.out.println(all);

}

static void addTree(File file, Collection all) {

File[] children = file.listFiles();

if (children != null) {

for (File child : children) {

all.add(child);

addTree(child, all);

}

}

}

Java 7提供了几个改进。例如,DirectoryStream每次提供一个结果 – 调用者不再需要等待所有I / O操作在执行之前完成。这允许增量GUI更新,提前取消等。

static void addTree(Path directory, Collection all)

throws IOException {

try (DirectoryStream ds = Files.newDirectoryStream(directory)) {

for (Path child : ds) {

all.add(child);

if (Files.isDirectory(child)) {

addTree(child, all);

}

}

}

}

请注意,可怕的null返回值已被替换为IOException。

Java 7还提供了一个tree walker:

static void addTree(Path directory, final Collection all)

throws IOException {

Files.walkFileTree(directory, new SimpleFileVisitor() {

@Override

public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)

throws IOException {

all.add(file);

return FileVisitResult.CONTINUE;

}

});

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值