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

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

java.util.zip.ZipFile.close()方法關(guān)閉ZIP文件。
關(guān)閉此ZIP文件將關(guān)閉以前由調(diào)用getInputStream()方法返回的所有輸入流。
這個方法連流都給我們關(guān)閉了!
就不用我們手動關(guān)閉zip文件的流了,最后在調(diào)用file.delete()方法就可以刪除文件了
java刪除本地文件問題
/**
* 刪除單個文件
*
* @param pathName 刪除文件路徑名
* @return
*/
public boolean deleteFiles(String pathName) {
boolean flag = false;
//根據(jù)路徑創(chuàng)建文件對象
File file = new File(pathName);
//路徑是個文件且不為空時(shí)刪除文件
if (file.isFile() && file.exists()) {
flag = file.delete();
}
//刪除失敗時(shí),返回false
return flag;
}總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn)
本篇教程給大家分享基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn),驗(yàn)證碼功能的實(shí)現(xiàn)是采用Zuul網(wǎng)關(guān)的Filter過濾器進(jìn)行校驗(yàn)驗(yàn)證碼,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧2021-05-05
Feign遠(yuǎn)程調(diào)用參數(shù)里面內(nèi)容丟失的解決方案
這篇文章主要介紹了Feign遠(yuǎn)程調(diào)用參數(shù)里面內(nèi)容丟失的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot后端接口的實(shí)現(xiàn)(看這一篇就夠了)
這篇文章主要介紹了SpringBoot后端接口的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
詳解SpringBoot中的統(tǒng)一結(jié)果返回與統(tǒng)一異常處理
這篇文章主要將通過詳細(xì)的討論和實(shí)例演示來幫助你更好地理解和應(yīng)用Spring Boot中的統(tǒng)一結(jié)果返回和統(tǒng)一異常處理,感興趣的小伙伴可以了解下2024-03-03
Resilience4J通過yml設(shè)置circuitBreaker的方法
Resilience4j是一個輕量級、易于使用的容錯庫,其靈感來自Netflix Hystrix,但專為Java 8和函數(shù)式編程設(shè)計(jì),這篇文章主要介紹了Resilience4J通過yml設(shè)置circuitBreaker的方法,需要的朋友可以參考下2022-10-10
教你用Java GUI實(shí)現(xiàn)文本文件的讀寫
今天帶大家來學(xué)習(xí)怎么用JavaSwing實(shí)現(xiàn)實(shí)現(xiàn)文本文件讀寫,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
java鏈?zhǔn)絼?chuàng)建json對象的實(shí)現(xiàn)
本文主要介紹了java中如何通過最簡單的方式實(shí)現(xiàn)鏈?zhǔn)絼?chuàng)建json對象,解決創(chuàng)建json代碼臃腫的問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Spring Boot中使用RabbitMQ 生產(chǎn)消息和消費(fèi)消息的實(shí)例代碼
本文介紹了在SpringBoot中如何使用RabbitMQ進(jìn)行消息的生產(chǎn)和消費(fèi),詳細(xì)闡述了RabbitMQ中交換機(jī)的作用和類型,包括直連交換機(jī)、主題交換機(jī)、扇出交換機(jī)和頭交換機(jī),并解釋了各自的消息路由機(jī)制,感興趣的朋友一起看看吧2024-10-10
如何在spring事務(wù)提交之后進(jìn)行異步操作
這篇文章主要為大家介紹了如何在spring事務(wù)提交之后進(jìn)行異步操作,這些異步操作必須得在該事務(wù)成功提交后才執(zhí)行,回滾則不執(zhí)行,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2023-09-09

