Java 刪除文件及文件夾刪除不了的解決
Java 刪除文件及文件夾刪除不了
問題所在
今天在編寫一個項目,流程是先創(chuàng)建一個臨時文件夾存放生成的文件,再經過壓縮導出,待導出成功后刪除臨時文件夾,但是怎么也刪除不了,還以為是寫的刪除方法有問題,找來找去,試了很多方法也刪除不了

本來以為是打包的流沒關閉,但是發(fā)現(xiàn)流都是關閉的,后來發(fā)現(xiàn),是在生成的方法里,直接new FileWriter出來的,沒有關閉,在這里提醒一下,關于操作文件或者文件夾一定都會用到流,所以用到的流一定要檢查一遍是否用完關閉了。
java文件刪除不了的坑,特別是壓縮文件
我們在用java刪除文件的時候通常直接調用file.delete();方法就行了,但是很多情況下卻刪除不了,
下面列舉一些情況
- 1.是文件夾且不為空,這個沒什么好說的,可以先刪除文件夾里的文件再刪除這個文件夾;
- 2.被別的進程占用,這不僅java不能刪,就算windows手動刪也刪不了;
- 3.跟這個文件的流沒有關閉,這個是最常見的原因了
然而我遇到的是上傳一個文件,然后跟這個文件有關的流也關閉了,還是刪除不了,后來發(fā)現(xiàn)有人把這個文件偷偷的轉換成zip壓縮文件了。

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

java.util.zip.ZipFile.close()方法關閉ZIP文件
關閉此ZIP文件將關閉以前由調用getInputStream()方法返回的所有輸入流。這個方法連流都給我們關閉了!就不用我們手動關閉zip文件的流了,最后在調用file.delete()方法就可以刪除文件了
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot中GlobalExceptionHandler異常處理機制詳細說明
Spring Boot的GlobalExceptionHandler是一個全局異常處理器,用于捕獲和處理應用程序中發(fā)生的所有異常,這篇文章主要給大家介紹了關于Java中GlobalExceptionHandler異常處理機制的相關資料,需要的朋友可以參考下2024-03-03
eclipse/IDEA配置javafx項目步驟(圖文教程)
這篇文章主要介紹了eclipse/IDEA配置javafx項目步驟(圖文教程),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
淺談synchronized方法對非synchronized方法的影響
下面小編就為大家?guī)硪黄獪\談synchronized方法對非synchronized方法的影響。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10

