java 删除文件不成功

   我在项目中需要用到文件上传,用jspsmartupload上传文件成功后,将此文件拷贝到服务器的另一个目录里,再去做数据库操作,如果数据库操作失败了,表明此次操作失败,这个文件也就没用了,于是在异常处理部分里把这个文件删掉。可是经常是删不掉。

不知道为什么?

    于是单步调试,我尝试在文件拷贝成功后,数据库操作未做的时候,手动的在机子上删除文件,结果windows提示说 文件正被使用,不让删除。

    纳闷了?难道是jvm没有回收相关资源,os认为此文件仍被使用?

   这个问题也不是每次都是,有时候顺利删除,有时候不行。比较郁闷了。
问题补充:
是 调用org.apache.commons.io.FileUtils,

FileUtils.copyFile(tempFile, newFile);

之后,newFile这个文件删不掉。FileUtils应该把相关的IO流都关闭了吧。

上传文件后,一定要将输出流关闭。否则就会处理一直被占用的状态!
我以前也是碰到这种问题,使用 .close()以后就可以了!

在正常和异常情况下,要确保操作文件的IO流已经被正确的关闭了