当前位置: 首页 > 知识库问答 >
问题:

Veracode CWE ID 404资源关闭或释放不当

公冶才
2023-03-14

我有这样的代码:

    try {
        BufferedWriter bw = null;
        FileWriter fw = null;
        try {
            final String fileName = getFileName();
            File propertiesFile=new File(getFilesDir(), fileName);
            fw = new FileWriter(propertiesFile);
            bw = new BufferedWriter(fw);
            bw.write(s);
            File file = new File(getFilesDir(), fileName);

        } catch (IOException e) {

        }finally{
            if(bw != null){
                bw.close();
            }
            if(fw != null){
                fw.close();
            }
            if(bw != null){
                bw.close();
            }
        }
    } catch (Exception e) {
    }

Veracode在这一行上检测到一个缺陷(不正确的资源关闭或释放)bw.write(s);怎么解决这个?提前致谢

共有1个答案

乜嘉悦
2023-03-14

使用try finally修复缺陷,并在inside finally关闭BufferedWriter和FileWriter

   try {
    BufferedWriter bw = null;
    FileWriter fw = null;
    try {
        final String fileName = getFileName();
        File propertiesFile=new File(getFilesDir(), fileName);
        fw = new FileWriter(propertiesFile);
        bw = new BufferedWriter(fw);
        bw.write(s);
        File file = new File(getFilesDir(), fileName);

    }finally{
        if(bw != null){
            bw.close();
        }
        if(fw != null){
            fw.close();
        }
    }
} catch (Exception e) {
}
 类似资料:
  • 问题内容: 我正在编写一个连接到网站并从中读取一行的应用程序。我这样做是这样的: 好吗?我的意思是,我在最后一行关闭了BufferedReader,但没有关闭InputStreamReader。我是否应该从connection.getInputStream创建一个独立的InputStreamReader,并从独立的InputStreamReader创建一个BufferedReader,而不是关闭所

  • 我在片段HomeFragment.java中声明了一个私有变量, 当我按下android导航栏上的back按钮时,应用程序被关闭,activity调用了onDestory()方法,但我发现变量mWeatherCards没有被回收,只有在我使用taskmanager关闭应用程序时才会被清理。taskmanager和back按钮关闭app和android资源释放时有什么区别?

  • 我正在使用Eclipse,并执行下面的函数,碰巧我打开了一个扫描器,然后,最后我关闭了它,但Eclipse一直说它没有关闭“资源泄漏:'Scanner'没有关闭”。我可以用try with resources来完成,警告消失了,但我想知道为什么我在这里尝试的方式不起作用

  • 我的MongoDB数据库具有快速增长的活动连接量。 我编写了一个代码来测试连接创建/关闭流程是如何工作的。这段代码总结了我如何在项目中使用库。 我发现了一件很奇怪的事,我不明白。根据我们创建新连接的方式(同步/异步),行为会有所不同。 如果我们同步创建连接-mongo在调用方法。 如果我们异步创建连接,mongo即使在调用方法。 > 是否有其他方法强制关闭连接插座? 它会在一段时间后自动关闭这些打

  • 我正在为面向对象编程的秋季考试做准备,其中一种任务是提供代码输出,这通常包括一些异常处理问题。 现在我的问题是什么时候用资源尝试关闭它的资源,因为我的输出严格依赖于实现AutoCloseable的类的输出。 在提供的代码中,我不明白为什么“close 1”输出在“close 40”之前,或者为什么对象A(40)在这个块的末尾被关闭。是因为A(50)和A(40)是同一类型的吗? 我的主要问题是,Au

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 到目前为止,我发现了一些在线资源,例如: http://www.torsten-horn.de/techdocs/java- hibernate.htm(GER