行走目录时的声纳毛发问题

问题描述 投票:0回答:2

我正在使用下面的代码来遍历目录并获取第一个文件。我无法解决两个声纳皮棉问题。请帮助。

List<String> result = walk.filter(Files::isRegularFile).map(x -> x.toString()).collect(Collectors.toList());

enter image description here

java sonarlint
2个回答
0
投票

the 3725 Sonar rule

Files.exists方法在JDK 8中的性能明显较差,并且当检查文件时,会大大降低应用程序的速度实际上不存在。

Files.notExists,Files.isDirectory和Files.isRegularFile。

请注意,当项目的sonar.java.source不是8。

您的项目很可能依赖JDK / JRE 8。如果您深入研究the OpenJDK issues,您会发现在Linux上该问题已部分解决,但在Windows上未解决。

关于第二期:

map(x -> x.toString())

只需将其替换为方法参考:

map(Path::toString)

所以最终要与Sonar兼容,它给出了:

                           //FIXME use Files::isRegularFile when update with Java>8 
List<String> result = walk.filter(p -> p.toFile().exists())
                          .map(Path::toString)
                          .collect(Collectors.toList());

0
投票

请进行此更改:

List<String> result = walk.filter(p -> p.toFile().isFile()).map(Path::toString).collect(Collectors.toList());

[SonarLint还说明了建议的原因。

Lambda应替换为方法引用

enter image description here

不应使用Java 8的“ Files.exists”

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.