电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Java解除文件占用即Dom4j操作后實現xml關流

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

一、背景

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

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

二、原因

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

三、解決方法

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

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

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

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

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

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

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

標簽: Java
相關文章:
主站蜘蛛池模板: 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 球盟会·(中国)官方网站| 锂离子电池厂家-山东中信迪生电源 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 合同书格式和范文_合同书样本模板_电子版合同,找范文吧 | 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 成都中天自动化控制技术有限公司 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 模型公司_模型制作_沙盘模型报价-中国模型网 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 耐破强度测试仪-纸箱破裂强度试验机-济南三泉中石单品站 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 无刷电机_直流无刷电机_行星减速机-佛山市藤尺机电设备有限公司 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 懂研帝_专业SCI论文润色机构_SCI投稿发表服务公司 | 渣土车电机,太阳能跟踪器电机,蜗轮蜗杆减速电机厂家-淄博传强电机 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 微学堂-电动能源汽车评测_电动车性能分享网| 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 锂电叉车,电动叉车_厂家-山东博峻智能科技有限公司 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 河南中专学校|职高|技校招生-河南中职中专网 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 药品仓库用除湿机-变电站用防爆空调-油漆房用防爆空调-杭州特奥环保科技有限公司 | 双相钢_双相不锈钢_双相钢圆钢棒_双相不锈钢报价「海新双相钢」 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 缠绕机|缠绕膜包装机|缠绕包装机-上海晏陵智能设备有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 骁龙云呼电销防封号系统-axb电销平台-外呼稳定『免费试用』 |