gpt4 book ai didi

java - 为什么 NIO.2 FileVisitor 类型是通用的?

转载 作者:搜寻专家 更新时间:2023-10-30 21:09:22 24 4
gpt4 key购买 nike

我正在研究 Java NIO.2 及其文件操作,目前我正在研究文件树遍历函数和类。

NIO.2 FileVisitor API 很棒,很遗憾这样的东西是最近才添加到 Java SE 中的,而不是十年前。然而,有些事情让我有点困扰:制作 FileVisitor 有什么意义?接口(interface)通用?

网络上的每个示例都展示了如何将它与 Files.walkFileTree() 一起使用这意味着我们正在使用 FileVisitor<Path>类型。但除了 Path 之外,我看不出此接口(interface)有任何用途。 .好吧,可能可以使用 FileVisitor遍历其他类型的树(内存中的树?),但这感觉不对:此接口(interface)和相关类具有非常特定的名称,这些名称在语义上与文件相关联,还有 FileVisitor的方法抛出 IOException

那么,是否有任何参数化 FileVisitor 的原因?类型?

最佳答案

通过泛型,相同的接口(interface)可以用于其他类型的路径。如以下(简化的)代码片段所示,该接口(interface)与 java.io.File 配合得很好:

FileVisitResult walk(File file, FileVisitor<File> visitor)
throws IOException
{
if (file.isDirectory()) {
visitor.preVisitDirectory(file, null);
for (File child : file.listFiles()) {
walk(child, visitor);
}
return visitor.postVisitDirectory(file, null);
} else {
return visitor.visitFile(file, null);
}
}

关于java - 为什么 NIO.2 FileVisitor 类型是通用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16406474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com