您好,登錄后才能下訂單哦!
這篇文章主要講解了“java刪除文件時總是返回false怎么辦”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java刪除文件時總是返回false怎么辦”吧!
java刪除文件時總是返回false,刪不掉
我的解決
java文件刪除不了的坑,特別是壓縮文件
下面列舉一些情況
java.util.zip.ZipFile.close()方法關閉ZIP文件
今天寫了個簡單的文件刪除的程序:代碼如下:
public static boolean deleteFiles(File[] files){ boolean flag = false; for(File file:files){ // 路徑為文件且不為空則進行刪除 if (file.isFile() && file.exists()) { flag = file.delete(); System.out.println(flag); } } return flag; }
我的文件都是存在的,但是就是經(jīng)常性的刪不了,不知道怎么回事,我單獨測試的時候是可以的,感覺很是奇怪,上網(wǎng)查,人家說是可能的情況有:
1、多線程操作
2、打開的文件流沒有關閉
3、需要垃圾回收下
分析下我的情況,我的是單線程的,所以第一種情況不存在,第二種情況我關閉我所有打開的文件流但是還是不行,后來我在程序中加了行System.gc();,結果就真的可以了,一下是修改后的:
public static boolean deleteFiles(File[] files){ boolean flag = false; for(File file:files){ // 路徑為文件且不為空則進行刪除 if (file.isFile() && file.exists()) { System.gc(); //加上確保文件能刪除,不然可能刪不掉 flag = file.delete(); System.out.println(flag); } } return flag; }
我們在用java刪除文件的時候通常直接調用file.delete();方法就行了,但是很多情況下卻刪除不了
1、是文件夾且不為空,這個沒什么好說的,可以先刪除文件夾里的文件再刪除這個文件夾
2、被別的進程占用,這不僅java不能刪,就算windows手動刪也刪不了
3、跟這個文件的流沒有關閉,這個是最常見的原因了
然而我遇到的是上傳一個文件,然后跟這個文件有關的流也關閉了,還是刪除不了,后來發(fā)現(xiàn)有人把這個文件偷偷的轉換成zip壓縮文件了。
然后刪除這個bookFile死活刪除不了,如果出現(xiàn)這種情況,這個zipFile最后一定要close;
關閉此ZIP文件將關閉以前由調用getInputStream()方法返回的所有輸入流。這個方法連流都給我們關閉了!就不用我們手動關閉zip文件的流了,最后在調用file.delete()方法就可以刪除文件了
感謝各位的閱讀,以上就是“java刪除文件時總是返回false怎么辦”的內容了,經(jīng)過本文的學習后,相信大家對java刪除文件時總是返回false怎么辦這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。