做解压缩包后,删除的功能
在finally中做数据处理完成后的临时文件删除功能,
关闭流必须一个一个关,不能写成下方的样式
finally {
try {
if (addIS != null){
addIS.close();
}
if (updateIS != null){
updateIS.close();
}
if (imgIS != null){
imgIS.close();
}
//解析完成 删除本次解析中生成的文件 删除此目录下的所有文件
com.ctsi.common.utils.file.FileUtils.deleteFileAll(zipTemp);
} catch (IOException e) {
e.printStackTrace();
return AjaxResult.error("导入失败!");
}
}
这样关闭流,在后面删除的时候,会报异常错误,
java.nio.file.FileSystemException: 另一个程序正在使用此文件,进程无法访问。
应该一个一个的关,是下面这种格式
finally {
if (addIS != null){
try {
addIS.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (updateIS != null){
try {
updateIS.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (imgIS != null){
try {
imgIS.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//解析完成 删除本次解析中生成的文件 删除此目录下的所有文件
com.ctsi.common.utils.file.FileUtils.deleteFileAll(zipTemp);
}
本文讨论了在Java编程中,如何在finally块中正确关闭输入流并删除临时文件,以防止出现'另一个程序正在使用此文件,进程无法访问'的异常。示例代码展示了不应该将多个流关闭写在同一行,而应逐个关闭以确保文件锁的释放,然后再进行文件删除操作。这样做可以避免因并发问题导致的文件操作失败。
1809

被折叠的 条评论
为什么被折叠?



