java - Sonarqube - 方法使用 FileInputStream 构造函数时出现性能问题,有哪些更好的替代方案?

标签 java file sonarqube inputstream fileinputstream

这是我的代码:

        KeyStore truststore = KeyStore.getInstance("JKS");
        truststore.load(new FileInputStream(TRUSTSTORE_FILE), 
                                           TRUSTSTORE_PASSWORD.toCharArray()); //sonarqube issue

哪个输入流最适合完成此任务?

这是完整的错误:

This method creates and uses a java.io.FileInputStream or java.io.FileOutputStream object. Unfortunately both of these classes implement a finalize method, which means that objects created will likely hang around until a full garbage collection occurs, which will leave excessive garbage on the heap for longer, and potentially much longer than expected.

我真的需要切换到:

InputStream is = java.nio.file.Files.newInputStream(myfile.toPath());

我对这个不太满意。

最佳答案

将其包装在 try-with-resources 中,以便它将在 block 末尾关闭。错误消息提示该文件可能打开了很长时间。

try (InputStream in = new FileInputStream(TRUSTSTORE_FILE)) {
    KeyStore truststore = KeyStore.getInstance("JKS");
    truststore.load(in, TRUSTSTORE_PASSWORD.toCharArray());
} // Automatically closes in.

这会释放系统资源(文件句柄)并允许其他人覆盖信任库文件。

关于java - Sonarqube - 方法使用 FileInputStream 构造函数时出现性能问题,有哪些更好的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64209115/

相关文章:

java - @SuppressWarnings ("hiding") 在 eclipse 中的目的是什么?

JavaFx 节点集.....() -> NullPointer 异常

java - 在 Java 中用多个连续逗号拆分字符串

Java InputStream读取问题

c# - CA0001 : Object reference not set to an instance of an object

javascript - 如何从 Sonar 分析中排除已编译资源的子文件夹?

java - 使用 Java Regex 从日志文件中查找不以符号分隔的主机名

c# - 从内存中读取文件的第一行

android - Sonarqube 整体覆盖范围与 jacoco 报告覆盖范围不匹配

python - 从大文件中读取一个字节