微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尽管 SKIP_SUBTREE,SimpleFileVisitor 仍挂在网络驱动器目录上

如何解决尽管 SKIP_SUBTREE,SimpleFileVisitor 仍挂在网络驱动器目录上

我遇到了网络驱动器速度非常慢的问题,并且 SimpleFileVisitor 应该跳过它但也挂了。我想问题是读取文件属性。是否有一种内置方法可以只查看路径而忽略其他任何内容以尽可能快地运行?

    final FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {
        private final PathMatcher matcherDirs = FileSystems.getDefault().getPathMatcher(PATTERN_Dirs);

        @Override
        public FileVisitResult preVisitDirectory(final Path dir,final BasicFileAttributes attrs) throws IOException {
            if (!matcherDirs.matches(dir)) {
                logger.trace("skipping directory {}",dir.toString());
                return FileVisitResult.SKIP_SUBTREE;
            }

            logger.debug("visit directory {}",dir.toString());
            return FileVisitResult.CONTINUE;
        }

    };

创建的日志:

2021-06-10 10:10:08,137 | TRACE | skipping directory /ap/os/script
2021-06-10 10:10:08,137 | TRACE | skipping directory /at
2021-06-10 10:10:18,143 | TRACE | skipping directory /backups
2021-06-10 10:10:18,143 | TRACE | skipping directory /dev

列出目录很快,但查看它很慢。所以访客也可以很快,恕我直言。

$ time ls -dl /backups
dr-xr-xr-x    1 root     system            1 Jan 06 15:54 /backups
real    0m0.005s
user    0m0.000s
sys     0m0.001s

$ time ls -l /backups 
total 0
real    0m30.015s
user    0m0.000s
sys     0m0.001s

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。