Windows NTFS 上的 Files.walkFileTree 与 Files.walk 性能比较

2024-04-09

我的应用程序 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(使用前将#替换为@)

Windows NTFS 上的 Files.walkFileTree 与 Files.walk 性能比较 的相关文章

  • 如何从不同 JVM 中的独立 java 程序调用 EJB

    我使用具有 glassfish 服务器的 NETbeans IDE 开发了 EJB 我可以从独立的java调用它 只要这个java项目是在NETbeans下开发并在相同的JRE下运行的 但我需要找出如何在不同的 jre 中运行它 我在这方面
  • Webdriver - 等待在 Firefox 中不起作用

    在我的应用程序中 我有一个用于在屏幕上显示记录的元素 所以在第一页上 它会显示类似 显示 2100 的 1 10 之类的内容 这是该元素的 CSS 它适用于所有浏览器 span GridPagingInfo 在我位于 iframe 中的应用
  • 如何在Spring中模拟ModelMapper?

    我正在尝试为我的服务层编写单元测试 SpringBootTest class ClinicServiceTest Mock private ProcedureRepository procedureRepository InjectMock
  • SQL错误:1054,SQLState:42S22“字段列表”中的未知列错误Java Spring Boot Mysql错误

    基本上我正在尝试制作一个简单的促销页面 我收到的错误是 SQL 错误 1054 SQLState 42S22 错误是 字段列表 中的未知列 promotion0 promo type id 这是模型类 package promotions
  • Apache Tomahawk 文件上传不工作

    我在使用 Apache Tomahawk 时遇到问题 Glassfish 3 0 1 不断记录 警告 JSF1064 无法从库 org apache myfaces custom 中找到或提供资源 inputFileUpload xhtml
  • 如何在java hashset中查找并返回对象

    根据 HashSet javadoc HashSet contains 仅返回布尔值 如何在 hashSet 中 查找 对象并修改它 它不是原始数据类型 我看到 HashTable 有一个 get 方法 但我更喜欢使用该集合 您可以删除一个
  • 生成总和为 N 的所有数字排列

    我正在编写一个程序来创建所有数字 起初 我尝试使用分区函数对数字进行分区 然后对每个数字集进行排列 但是我认为这行不通 最好的方法是递归排列 同时对数字求和 这超出了我的能力范围 抱歉 如果这听起来真的很愚蠢 但我真的不知道 Example
  • 如何在Ant中添加相当于java -D的系统属性

    我需要设置java Djava library path some path我想在运行 ant 脚本 构建 jar 时执行此操作 我想我必须使用
  • 如何使用递归获取父级的所有子级,然后获取其子级

    问候 我的 JSP Web 应用程序中有父事务的比喻 我将事务 ID 存储在数据库中 要求是显示父级的所有子级 然后显示父级子级的后续子级 实际上 这个父母及其孩子的列表永远不会超过 4 或 5 层 但我需要考虑到它可以比这更多层 我尝试过
  • Spring Boot 中的 spring.jpa.open-in-view=true 属性是什么?

    I saw spring jpa open in view trueSpring Boot 文档中用于 JPA 配置的属性 Is the true如果根本没有提供此属性的默认值 这到底有什么作用 我没有找到任何好的解释 它让你使用Sessi
  • 从后台线程更新可观察列表的正确方法

    我正在尝试遵循 MVC 进行测试项目 因此我的模型应该完全独立于我的观点 但是我不确定应该如何更新在后台线程中更新的可观察列表 正在给出有关上传的字符串 文件 以便消息显示在 UI 上的 ListView 中 我正在使用 JavaFX 并尝
  • 一个好的 Java VM 中方法调用的开销是多少?

    有人可以提供反汇编的机器代码汇编程序列表吗 我的意思是 与 C 中的普通函数调用相比 肯定有一些开销 VM 需要跟踪调用以查找热点 并且当它使用编译代码时 如果新加载的类需要重新编译 它需要提供动态更改编译方法的方法 我想某处也有返回堆栈溢
  • Hibernate EnumType 实例化异常

    我正在使用 hibernate 4 和基于 xml 的映射 这是我遇到的异常 Caused by org hibernate MappingException Unable to instantiate custom type org hi
  • 如何在 JPQL 语句中使用类型转换?

    我有两个Integer数据库中的列 derby 和 db2 我需要将它们彼此分开JPQL 两列都是类型Integer如果余数是十进制数 则返回零 例如0 25变成0等等 这是可以理解的 因为类型是 int In SQL例如我可以有这个 se
  • Android:如何按下软键盘上方的按钮

    我有一个 保存 按钮 我想将其与软键盘一起按下 因此 当用户单击布局中的 EditText 时 按钮必须保持在键盘上方 现在该按钮隐藏在键盘下方 你怎么做到这一点 提前致谢 您需要将键盘的输入模式设置为adjustResize 您可以通过将
  • 尝试让 GUI 使用 arrayList 在牌组中打印随机卡

    所以我目前正在用java开发一个卡牌战争游戏 我试图让 GUI 屏幕使用 arrayList 从一组卡片图像中打印 2 张随机卡片 必须使用它进行分配 卡片图像文件名为 1 png 2 png 52 png 并存储在 image card
  • 在 Java、Android 上从 Youtube 下载视频的代码

    我创建了从 Youtube 下载视频的代码 但此代码不适用于 Wi fi 连接 但适用于移动连接 我哪里有错误 import java io File import java io FileOutputStream import java
  • 2010 年的 java 并发修改异常灾难

    绘制一些存储在 ArrayList 中的粒子 这段代码工作正常 super paintComponent g for Particle b particleArr g setColor b getColor g fillOval b get
  • 如何修复 Jaspersoft studio 插件中由 TraceGovernor 引起的 java.lang.NullPointerException?

    我正在为 Jaspersoft studio 编写最新的插件 当尝试打开报告预览时 插件崩溃 来自插件 java lang NullPointerException 的堆栈跟踪 com jaspersoft studio debug Tra
  • 带有 wsdl2java 插件的 gradle

    我正在使用 no nils wsdl2java 插件 完整的 gradle build 文件如下所示 plugins id org springframework boot version 2 3 4 RELEASE id io sprin

随机推荐