色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

Java解除文件占用即Dom4j操作后實(shí)現(xiàn)xml關(guān)流

瀏覽:61日期:2022-09-03 09:51:34

一、背景

項(xiàng)目中要解析xml,由于Dom4j的諸多優(yōu)點(diǎn),我就用Dom4j解析xml,代碼如下:

public void readXML() { SAXReader reader = new SAXReader(); Document doc = null; try { doc = reader.read(new File('demo.xml')); Element root = doc.getRootElement(); /** * 其他代碼 */ } catch (DocumentException e) { e.printStackTrace(); } }

查看Dom4j的api,你會(huì)發(fā)現(xiàn),不管是SAXReader,還是Document,都沒有提供關(guān)閉流資源的操作,我當(dāng)時(shí)天真的以為Dom4j自動(dòng)關(guān)閉流資源了,不用我們?cè)訇P(guān)流了。

后來的某一天,由于業(yè)務(wù)的需要,需要在程序中刪除此xml,我發(fā)現(xiàn)不管我用file.deleteOnExit(),還是用file.delete()。都刪除不了此xml文件,顯示文件被占用,無法刪除,我自己用鼠標(biāo)去刪除,也是顯示“操作無法完成 因?yàn)槲募言?Java™ Platform SE binary 中打開”,至此才發(fā)現(xiàn)Dom4j沒有關(guān)閉流資源,Dom4j當(dāng)時(shí)給我的是幻覺,幸好線上xml文件不是特別多,不然要出生產(chǎn)事故了。

二、原因

Dom4j解析完xml沒有關(guān)閉連接。

三、解決方法

方法一、系統(tǒng)進(jìn)行資源強(qiáng)制回收System.gc(),解除占用

但是System.gc()只是通知GC進(jìn)行垃圾回收,但是啥時(shí)GC回收不知道,所以這個(gè)方法不一定一次成功,如果一次強(qiáng)制回收不成功,那就搞個(gè)循環(huán),多來幾次。

public boolean forceDelete(File file){ boolean result=file.delete(); if (!result) { System.gc(); //回收資源 file.delete(); } return result; }

方法二、在Dom4j中關(guān)閉流資源

 這里沒有以內(nèi)部類的方式創(chuàng)建InputStream,而是顯示創(chuàng)建,然后關(guān)流(jdk1.7 try-with-resource語法)。

public void readXML() { SAXReader reader = new SAXReader(); Document doc = null; try(FileInputStream fin = new FileInputStream('demo.xml')) { doc = reader.read(fin); Element root = doc.getRootElement(); /** * 其他代碼 */ } catch (DocumentException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

四、建議

1、創(chuàng)建IO流如果不是特別需要,一般盡量不要使用“匿名內(nèi)部類”來創(chuàng)建;

2、使用IO流讀取文件,記得要在最后把流關(guān)閉了,不然會(huì)一直占著文件不放開,并且耗費(fèi)資源。而且謹(jǐn)記:先創(chuàng)建的流最后關(guān)閉,且創(chuàng)建關(guān)閉一一對(duì)應(yīng)。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 成人免费一区二区三区视频软件 | 欧美成人精品欧美一级乱黄 | 久久爰www免费人成 久久曰视频 | 亚洲成人自拍网 | 白嫩美女直冒白浆 | 久久最新视频 | 国产一级做a爰片久久毛片 国产一级做a爰片久久毛片99 | 国产精品黄页网站在线播放免费 | 欧美日韩顶级毛片www免费看 | 韩国good三级在线观看久 | 新版天堂中文资源官网 | 国产三级网站在线观看 | 日韩理论在线 | 久久tv免费国产高清 | 久久国产视频网 | 国产精品一级香蕉一区 | 三级网站国产 | 亚洲欧美在线看 | 粉嫩高中生的第一次在线观看 | 国产精品视频一区二区三区 | 成人a毛片高清视频 | 久久亚洲国产午夜精品理论片 | 日本a级精品一区二区三区 日本a级毛片免费视频播放 | 香蕉久久成人网 | 美国一级毛片a | 男人天堂视频网 | 久草在线视频在线观看 | 欧美91精品久久久久网免费 | 涩涩国产精品福利在线观看 | 免费 成年人| 日韩无砖专区体验区 | 萝控精品福利视频一区 | 国产欧美亚洲精品 | 91视频国内 | 国产不卡精品一区二区三区 | 久久久久久亚洲精品中文字幕 | 国产在线精品一区二区三区不卡 | 亚洲自偷自拍另类12p | 国产三级毛片视频 | 一级做a爱久久久久久久 | 香蕉521av网站永久地址 |