永发信息网

java解析xml文件一旦异常,则无法删除该xml文件,该怎样操作

答案:4  悬赏:70  手机版
解决时间 2021-03-26 15:03
java解析xml文件一旦异常,则无法删除该xml文件,该怎样操作
最佳答案
如果你需要不管解析成功与否,都删除文件的话,可以考虑把删除动作放到异常处理的finally块中。追问但是解析失败了,我无法删除呀?删除我是必然会操作,但是我想知道的是对于解析失败的文件,如何去关闭其异常操作,再删除(好似你的文件被其他程序占用了,现在你想删除它,会提示你删除失败)。1楼答道点子上了,可是我不知道如何去强制关闭文档。追答你要先确认,无法删除文件的原因:
 产生异常,导致流程跳过了删除代码因而无法删除文件
文件被占用,执行删除代码却无法删除文件。
 
如果是1,那就把删除代码 放到try-catch-finally的finally块中,以保证执行删除语句。
如果是2,那就可能有很多原因,比如释放资源,断开连接之类的
追问是第2种。我把问题用代码和文字都补充了,大神看看有何高见?追答确定是第二种,那就说明异常时资源被占用

你可以使用FileInputStream,然后在finally中,首先关闭文件输入流,然后再删除文件,就应该ok了。

代码结构如下,新增部分我加了注释,

FileInputStream fis = new FileInputStream(new File("....."));

try{
SAXReader sax = new SAXReader();
Document doc= sax.read(fis); // 这里使用 文件输入流
} catch (DocumentException e) {

}finally{
try {
fis.close(); // 这里关闭文件输入流
} catch (IOException e) {
e.printStackTrace();
}

if(file.delete()){
System.out.println("文件已被删除!");
}else{
System.out.println("文件删除失败!");
}
}追问上午忙。刚按照大神的做法测试了下,可行!灰常感谢!昨天我自己想了想,用的是另外一种方法,也解决了这个问题,大神觉得这样有问题么?我在catch里,加入System.gc();然后就没问题了。追答不推荐使用垃圾回收机制
gc只是通知做垃圾回收,具体的回收时刻甚至是否确定会回收——都是不确定的,这样会影响程序的稳定性。
全部回答
try{}catch(){}finally{} finally的代码是必须执行的 catch是遇到异常以后执行的 try是正常代码 catch() ()中写异常 ex 如 catch(Exception e)
加个try{} catch
在catch到DocumentException异常时强行关闭文档,也就是关闭输出流!然后finally中继续删除文件!你试试吧!追问嗯,我很想关闭。刚补充了一下问题,贴出了简要的代码和文字,请问SAXReader sax = new SAXReader(); Document doc= sax.read(file);抛出的异常该如何手动去关闭流?
加个try{} catch
在catch到DocumentException异常时强行关闭文档追问强制关闭文档?大神求语句!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想要把老公的小三赶走,求方法指导?
天语E61的重要参数
鹅肉炖汤可以放什么一起炖养生
成人高考明年没有了吗?
你们觉得被查水表一般是什么人
一般说来,男生喜欢女生戴黑框眼镜还是无框眼
冬笋没出地面,怎样寻找才能找到竹笋并挖出?
应该先刷墙壁还是先做衣柜?
I' m so sad no是什么意思?
k46福州到济南退票手续费多少钱
怎么才能造个换水方便的鱼缸造景
小伙钓鱼甩到高压线被电身亡可以找电力部门赔
如何辨别日丰PVC穿线管道真假?
12年tv销量霸权的动漫 在线等答案啊谢谢谢谢
柚子的数量词是什么
推荐资讯
单选题太平军攻占绍兴后,地主“向佃户收租,
骑行坐垫包有什么牌子好
铝厂阳极浇铸时应该掌握好什么?
有没有一个服装品牌叫3m
在游戏界面的哪儿,求助
读“某城市示意图”,回答下列问题:(10分)
从来没上过班,第一次怎么找班上?
-I want to sit at the table near the wind
刚买的Vega64显卡,这跑分正常吗?是不是翻车
simulink sine wave 直线
“保健调理师”工种这么牛,那么它包含针灸吗
魔兽世界里卖掉或者摧毁的任务奖励配方就永远
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?