加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在catch期间删除最终vs删除输出文件期间的临时文件

发布时间:2020-12-15 04:53:43 所属栏目:Java 来源:网络整理
导读:这是在 Java 6中. 我不止一次见过人们创建临时文件,做某事,然后将其重命名为输出文件.所有东西都包含在一个try-finally块中,最后在临时删除临时文件的情况下会出现问题. try { //do something with tempFile //do something with tempFile //do something wi
这是在 Java 6中.

我不止一次见过人们创建临时文件,做某事,然后将其重命名为输出文件.所有东西都包含在一个try-finally块中,最后在临时删除临时文件的情况下会出现问题.

try {
    //do something with tempFile
    //do something with tempFile
    //do something with tempFile
    tempFile.renameTo(outputFile);
}
finally {
    if (tempFile.exists())
        tempFile.delete()
}

我想知道这样做的好处是什么,而不是直接对输出文件做某些事情,如果出现异常则将其删除.

try {
    //do something with outputFile
    //do something with outputFile
    //do something with outputFile
}
catch (Exception e) {
    if (outputFile.exists())
        outputFile.delete();
}

我的猜测是,当try块可以抛出多种异常时,删除临时文件最终会让我受益.我猜对了吗?还有什么?

解决方法

finally总是执行,而上面的catch没有执行从java.lang.Error派生的异常,并且当它无法重命名时它也将删除该文件(此操作在失败时不会抛出异常… Java IO中的一个古老的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读