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中的一个古老的错误.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |