java如何強(qiáng)制刪除java程序占用的文件
java強(qiáng)制刪除java程序占用的文件
在JAVA對文件的讀寫操作中,操作完以后將輸入流和輸出流及時關(guān)閉時很必要的。
假如我們有時候忘記關(guān)閉了,又不知道在哪個地方去關(guān)閉,為了刪除該文件,JAVA可以進(jìn)行強(qiáng)制刪除操作。
可以使用如下代碼進(jìn)行強(qiáng)制刪除:
public boolean forceDelete(File file){
boolean result=file.delete();
if (!result) {
System.gc(); //回收資源
file.delete();
}
return result;
}如果一次強(qiáng)制回收不成功,那就搞個循環(huán),多來幾次,如下代碼:
public boolean forceDelete(File file) {
boolean result = file.delete();
int tryCount = 0;
while (!result && tryCount++ < 10) {
System.gc(); //回收資源
result = file.delete();
}
return result;
}雖然System.gc()可以這樣強(qiáng)制解除對文件的占用,但是也不是萬能的,因?yàn)椋?/p>
- ① 及時關(guān)閉輸入流、輸出流是很有必要的
- ② System.gc()也不是一定能夠回收垃圾的,能否成功回收取決于JVM的回收機(jī)制,外部人員是無法掌控的。就像我們?nèi)コ燥埖葧r間長了催單,我們只是向餐館提交了我們的申請,能不能快點(diǎn)上菜依然取決于廚師
- ③ 即使不用System.gc()進(jìn)行強(qiáng)制回收,JVM的回收機(jī)制也會在一段時間后對資源進(jìn)行回收
- ④ 這種方法也只對被java程序占用的文件有用,對于被其他進(jìn)行占用的文件就無能為力了
java強(qiáng)行刪除文件(針對進(jìn)程正在使用的文件的刪除)
操作無法完成 因?yàn)槲募言?Java(TM) Platform SE binary 中打開。
出現(xiàn)該問題的原因是創(chuàng)建的IO流沒有正常的關(guān)閉,導(dǎo)致資源文件一直被占用!
只要為創(chuàng)建的每一個IO流加上close方法就能正常使用,而且謹(jǐn)記:先創(chuàng)建的流最后關(guān)閉,且創(chuàng)建關(guān)閉一一對應(yīng)。
刪除被進(jìn)程占用的文件,可以先判斷文件是否被刪除,如果沒有,則讓系統(tǒng)強(qiáng)制回收資源,進(jìn)行文件的刪除
示例如下:
boolean result = f.delete();
if(!result)
{
System.gc();
f.delete;
}總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringSecurity在分布式環(huán)境下的使用流程分析
文章介紹了Spring?Security在分布式環(huán)境下的使用,包括單點(diǎn)登錄(SSO)的概念、流程圖以及JWT(JSON?Web?Token)的生成和校驗(yàn),通過使用JWT和RSA非對稱加密,可以實(shí)現(xiàn)安全的分布式認(rèn)證,感興趣的朋友一起看看吧2025-02-02
Spring框架實(shí)現(xiàn)AOP的兩種方式詳解
這篇文章主要為大家詳細(xì)介紹了Spring框架實(shí)現(xiàn)AOP的兩種方式,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定的借鑒價值,需要的可以參考一下2022-09-09
IDEA mybatis-generator逆向工程生成代碼
這篇文章主要介紹了IDEA mybatis-generator逆向工程生成代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
spring cloud 阿波羅 apollo 本地開發(fā)環(huán)境搭建過程
Apollo(阿波羅)是攜程框架部門研發(fā)的配置管理平臺,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性2018-01-01
JavaWeb 實(shí)現(xiàn)驗(yàn)證碼功能(demo)
在 WEB-APP 中一般應(yīng)用于:登錄、注冊、買某票、秒殺等場景,大家都接觸過這個驗(yàn)證碼操作,今天小編通過實(shí)例代碼給大家講解javaweb實(shí)現(xiàn)驗(yàn)證碼功能,需要的朋友參考下2017-02-02

