我的应用程序 https://komga.org/需要定期扫描文件系统以处理文件。最初我使用的是java.nio.file.Files.walk
执行扫描,但很快我就遇到了一些问题AccessDeniedException
. 发现 https://mail.openjdk.java.net/pipermail/core-libs-dev/2016-May/041424.html经过一番谷歌搜索后Files.walk
期望用户可以访问探索的目录树,否则它将崩溃并停止,这使得该功能对于我的应用程序无法使用(它是由各种系统上的许多人自行托管的)。
我改变了使用的实现java.nio.file.Files.walkFileTree
相反,这似乎效果很好并且处理了AccessDeniedException
在用户代码中。
然而,最近有人报告扫描时间猛增从短短12秒 (using Files.walk
) 至 80 分钟 (using Files.walkFileTree
)!用户拥有大约 10,000 个文件夹和 120,000 个文件。它正在运行 Windows,并且磁盘使用 NTFS。其他具有类似数量的文件夹/文件但运行 Linux 的用户无论使用什么方法,扫描时间都在 10 秒以下。
我试图了解什么可能会导致使用时造成巨大的性能损失Files.walkFileTree
在使用 NTFS 的 Windows 上,但由于我无法访问运行 Windows 的测试系统,因此我无法调试代码以了解时间花在哪里。
您知道在 Windows NTFS 下遍历文件树是否存在已知问题吗?如果我可以使用其他一些方法来执行该任务?请记住我需要处理AccessDeniedException
在用户代码中。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)