java - 强化 try-with-resource 的安全问题 "Unreleased resource stream"

标签 java file-io fortify objectinputstream

强化安全运行不合规代码

public static A read(String path) throws IOException, ClassNotFoundException {
    try (ObjectInputStream os = new ObjectInputStream(new GZIPInputStream(new FileInputStream(path)))) {
        return (A) os.readObject();
    }
}

它说的是“未释放的资源:Streams”,但它位于 try-with-resource 内,那么可能是什么问题?请帮助我。

最佳答案

您的工具可能担心的问题是,如果 GZIPInputStreamObjectInputStream 在实例化期间抛出异常,则 FileInputStream 将不会关闭。您可以尝试以下方法:

public static A read(String path) throws IOException, ClassNotFoundException {
    try (FileInputStream fileInput = new FileInputStream(path);
         GZIPInputStream gzipInput = new GZIPInputStream(fileInput);
         ObjectInputStream objectInput = new ObjectInputStream(gzipInput)) {
        return (A) objectInput.readObject();
    }
}

关于java - 强化 try-with-resource 的安全问题 "Unreleased resource stream",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56289611/

相关文章:

java - 从 JSP 抛出异常

java - 如何模拟/测试蓝牙聊天?

java - Java打印后删除PDF文件

python - Python 的 'a+' 文件打开模式中的错误?

c++ - 警告 - 从 size_t 转换为 DWORD,可能丢失数据

java - 模拟调用同一类的另一个静态方法的静态方法

java - 使用 FragmentPagerAdapter 创建 fragment 时,在运行时更改 fragment 可见性

file - 开放系统调用的工作

c - 使用 HP Fortify SCA 扫描 Linux 内核

java - 为什么 Fortify SCA 针对我的项目中不再存在的文件报告问题?