国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

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

一、背景

項目中要解析xml,由于Dom4j的諸多優(yōu)點,我就用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,你會發(fā)現(xiàn),不管是SAXReader,還是Document,都沒有提供關閉流資源的操作,我當時天真的以為Dom4j自動關閉流資源了,不用我們再關流了。

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

二、原因

Dom4j解析完xml沒有關閉連接。

三、解決方法

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

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

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

方法二、在Dom4j中關閉流資源

 這里沒有以內部類的方式創(chuàng)建InputStream,而是顯示創(chuàng)建,然后關流(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流如果不是特別需要,一般盡量不要使用“匿名內部類”來創(chuàng)建;

2、使用IO流讀取文件,記得要在最后把流關閉了,不然會一直占著文件不放開,并且耗費資源。而且謹記:先創(chuàng)建的流最后關閉,且創(chuàng)建關閉一一對應。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 成人福利网站在线看视频 | 综合色久七七综合七七蜜芽 | 91香蕉国产亚洲一区二区三区 | 中文字幕亚洲一区二区va在线 | 日本在线加勒比 | 欧美一级在线毛片免费观看 | 在线免费成人网 | 日韩欧美在线一区二区三区 | 色夜视频 | 国产成人亚洲精品2020 | 请看一下欧美一级毛片 | 欧美在线做爰高清视频 | 日韩不卡一区二区 | 在线观看精品自拍视频 | 亚洲欧美国产精品久久久 | 三级国产精品一区二区 | 亚洲精品一区二区三区四区手机版 | 中文字幕一区日韩在线视频 | 亚洲视频天堂 | 日本一级特黄a大片 | 26uuu欧美日韩国产 | 九九热视频在线免费观看 | 免费成人在线网站 | 久久综合日韩亚洲精品色 | 九九视频精品在线 | 日本欧美高清 | 国产欧美精品一区二区三区 | 2019国产精品 | 手机看片国产日韩 | 久色乳综合思思在线视频 | 99国产精品久久久久久久... | 中文字幕久久亚洲一区 | 欧美一区二区三区男人的天堂 | 男女乱淫真视频免费观看 | 国产成人精品三级91在线影院 | 一级全免费视频播放 | 精品欧美一区二区三区免费观看 | 国产一级毛片免 | 美女视频很黄很a免费国产 美女视频黄.免费网址 | 久草免费精品视频 | 女人扒开双腿让男人捅 |