java寫入zip文件后無法進(jìn)行刪除的問題及解決
java寫入zip文件后無法進(jìn)行刪除
今天做一個(gè)上傳zip進(jìn)行解壓寫入服務(wù)器,發(fā)現(xiàn)寫入后無法對(duì)上傳的ZIP進(jìn)行刪除,即使手動(dòng)刪除也不可以??偸翘崾颈籮ava 的jvm占用。
首先懷疑的是某個(gè)流沒有關(guān)閉,但是仔細(xì)檢查還是什么都關(guān)閉了,順序也是正確的。
后來想想既然jvm占用可不可以提示一下讓他回收內(nèi)存呢。

加入 System.gc(); 方法后果然 zip文件可以刪除了,完美解決。
java文件刪除不了的坑,特別是壓縮文件
我們?cè)谟胘ava刪除文件的時(shí)候通常直接調(diào)用file.delete();方法就行了,但是很多情況下卻刪除不了,
下面列舉一些情況
- 1.是文件夾且不為空,這個(gè)沒什么好說的,可以先刪除文件夾里的文件再刪除這個(gè)文件夾;
- 2.被別的進(jìn)程占用,這不僅java不能刪,就算windows手動(dòng)刪也刪不了;
- 3.跟這個(gè)文件的流沒有關(guān)閉,這個(gè)是最常見的原因了
然而我遇到的是上傳一個(gè)文件,然后跟這個(gè)文件有關(guān)的流也關(guān)閉了,還是刪除不了,后來發(fā)現(xiàn)有人把這個(gè)文件偷偷的轉(zhuǎn)換成zip壓縮文件了。

然后刪除這個(gè)bookFile死活刪除不了,如果出現(xiàn)這種情況,這個(gè)zipFile最后一定要close;

java.util.zip.ZipFile.close()方法關(guān)閉ZIP文件。
關(guān)閉此ZIP文件將關(guān)閉以前由調(diào)用getInputStream()方法返回的所有輸入流。
這個(gè)方法連流都給我們關(guān)閉了!
就不用我們手動(dòng)關(guān)閉zip文件的流了,最后在調(diào)用file.delete()方法就可以刪除文件了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?MVC啟動(dòng)之HandlerMapping作用及實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Spring?MVC啟動(dòng)之HandlerMapping作用及實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Java volatile 關(guān)鍵字介紹與使用示例詳解
這篇文章詳細(xì)介紹了Java中的volatile關(guān)鍵字,包括它的核心特性、如何保證變量的可見性和有序性,以及它在解決多線程問題中的局限性,文章通過示例展示了如何在實(shí)際編程中使用volatile,并解釋了如何通過其他同步機(jī)制來彌補(bǔ)volatile的不足,感興趣的朋友一起看看吧2025-01-01
Java修改圖片大小尺寸的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了Java修改圖片大小尺寸的簡(jiǎn)單實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringBoot中@Transiactional注解沒有效果的解決
這篇文章主要介紹了SpringBoot中@Transiactional注解沒有效果的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot請(qǐng)求參數(shù)相關(guān)注解說明小結(jié)
這篇文章主要介紹了SpringBoot請(qǐng)求參數(shù)相關(guān)注解說明,主要包括@PathVariable,@RequestHeader、@CookieValue、@RequestBody和@RequestParam,本文結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2022-05-05
Win10系統(tǒng)下配置Java環(huán)境變量
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著Win10系統(tǒng)下配置Java環(huán)境變量展開,文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下2021-06-06

