问题描述
我在项目中需要用到文件上传,用jspsmartupload上传文件成功后,将此文件拷贝到服务器的另一个目录里,再去做数据库操作,如果数据库操作失败了,表明此次操作失败,这个文件也就没用了,于是在异常处理部分里把这个文件删掉。可是经常是删不掉。不知道为什么? 于是单步调试,我尝试在文件拷贝成功后,数据库操作未做的时候,手动的在机子上删除文件,结果windows提示说 文件正被使用,不让删除。 纳闷了?难道是jvm没有回收相关资源,os认为此文件仍被使用? 这个问题也不是每次都是,有时候顺利删除,有时候不行。比较郁闷了。问题补充:是 调用org.apache.commons.io.FileUtils,FileUtils.copyFile(tempFile, newFile);之后,newFile这个文件删不掉。FileUtils应该把相关的IO流都关闭了吧。
解决方案
上传文件后,一定要将输出流关闭。否则就会处理一直被占用的状态!我以前也是碰到这种问题,使用 .close()以后就可以了!
解决方案二:
在正常和异常情况下,要确保操作文件的IO流已经被正确的关闭了
时间: 2024-09-30 00:37:49