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

有个xml文件,解析时出现DocumentException异常,然后我删除此文件file.delete(),总是失败;但如果不解析直接删除,则成功。我想可能是因为解析的... 有个xml文件,解析时出现DocumentException异常,然后我删除此文件file.delete(),总是失败;但如果不解析直接删除,则成功。我想可能是因为解析的异常操作一直没有关闭,占用着文件,使得文件无法被删除,那么我该怎么处理异常,才能保持其能被成功删除?
如我用dom4j去读某一xml文件(file),结果出错了(文件内容是故意写错的),跳到DocumentException的catch里。我再对这个file进行delete操作,提示"文件删除失败!";而如果读的xml文件正常,那么提示"文件已被删除!"。我猜原因是DocumentException一直在占用处理着此file,使得它不能被修改与删除。不知道该在catch里进行怎么样的操作好。
File file = new File(filePath);

try{
SAXReader sax = new SAXReader();
Document doc= sax.read(file);
} catch (DocumentException e) {

}finally{
if(file.delete()){
System.out.println("文件已被删除!");
}else{
System.out.println("文件删除失败!");
}
}
展开
 我来答
rayregister
2013-08-08 · TA获得超过339个赞
知道小有建树答主
回答量:100
采纳率:100%
帮助的人:65.7万
展开全部
如果你需要不管解析成功与否,都删除文件的话,可以考虑把删除动作放到异常处理的finally块中。
更多追问追答
追问
但是解析失败了,我无法删除呀?删除我是必然会操作,但是我想知道的是对于解析失败的文件,如何去关闭其异常操作,再删除(好似你的文件被其他程序占用了,现在你想删除它,会提示你删除失败)。1楼答道点子上了,可是我不知道如何去强制关闭文档。
追答

你要先确认,无法删除文件的原因:

  1.  产生异常,导致流程跳过了删除代码因而无法删除文件

  2. 文件被占用,执行删除代码却无法删除文件。

 

如果是1,那就把删除代码 放到try-catch-finally的finally块中,以保证执行删除语句。

如果是2,那就可能有很多原因,比如释放资源,断开连接之类的

artintin
2013-08-08 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2862万
展开全部
加个try{} catch
在catch到DocumentException异常时强行关闭文档
追问
强制关闭文档?大神求语句!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张策是gou
2013-08-08 · TA获得超过250个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:89.3万
展开全部
加个try{} catch
在catch到DocumentException异常时强行关闭文档,也就是关闭输出流!然后finally中继续删除文件!你试试吧!
追问
嗯,我很想关闭。刚补充了一下问题,贴出了简要的代码和文字,请问SAXReader sax = new SAXReader(); Document doc= sax.read(file);抛出的异常该如何手动去关闭流?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
X_Sor
2013-08-08
知道答主
回答量:18
采纳率:0%
帮助的人:6.9万
展开全部
try{}catch(){}finally{} finally的代码是必须执行的 catch是遇到异常以后执行的 try是正常代码 catch() ()中写异常 ex 如 catch(Exception e)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式