首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么NIO.2 FileVisitor类型是通用的?

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

Stack Overflow用户
提问于 2013-05-06 20:12:14
回答 2查看 585关注 0票数 12

我正在研究JavaNIO.2及其文件操作,目前我正在处理文件遍历函数和类。

NIO.2 Java太棒了,遗憾的是,这种东西是最近才添加到Java中的,而不是十年前。然而,有件事让我有点烦恼:让FileVisitor接口泛化有什么意义呢?

网络上的每个示例都显示了如何将其与Files.walkFileTree()一起使用,这意味着我们使用的是FileVisitor<Path>类型。但是除了Path之外,我看不出这个接口对其他东西有什么用处。好吧,也许可以使用FileVisitor来遍历其他类型的树(内存中的树?),但这感觉不太对:这个接口和相关类在语义上与文件有非常特定的名称,FileVisitor的方法也抛出IOExceptions。

那么,参数化FileVisitor类型有什么原因吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-06 22:04:28

对于泛型,相同的接口可以用于其他类型的路径。如下面(简化的)代码片段所示,该接口在java.io.File中运行得很好

代码语言:javascript
复制
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);
    }
}
票数 5
EN

Stack Overflow用户

发布于 2013-05-06 22:03:54

你用GitHub吗?这将是一个非常好的机会,可以使用FileVisitor实现GitHub的API,从而允许您探索/可视化GitHub项目。因此,几乎任何SCC系统都可以使用不同的类作为文件定位器。

使用FileVisitor<ZipEntry>来遍历zip文件如何?

如果一个API以多个对象作为它的目标可能是可用的,那么使它成为通用的只是有意义的。我认为,而不是,使它成为通用的,应该被认为是愚蠢的错误。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16406474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档