? ?
java delete是什么,讓我們一起了解一下。
delete是指刪除,常用于編程語言中(C++,SQL等等)。而在java中的delete可以刪除一個對象的屬性,卻不能刪除一個變量,也不能刪除一個函數,delete只有當一個屬性無法被刪除時才返回false。
為什么delete只有當一個屬性無法被刪除時才返回false呢?
舉例說明:比如在項目中要刪除文件夾, 只有一層, 下面有zip包, jpg圖片, xml文件, 但是在刪除時, 有一部分文件卻刪不掉, delete的結果是false。
示例代碼如下:
public?void?deleteDir(File?file) { if?(file.exists()) { ? File?files[]?=?file.listFiles(); for?(int?i?=?0;?i?上述業務邏輯是, 根據業務號從數據庫讀取該業務號下影像的路徑,然后找到對應的文件并復制到以業務號命名的文件夾下,以業務號命名的文件夾放在指定的文件夾destdir下,然后然后根據影像信息生成xml報文。
當報文生成后, 將影像和報文打包成zip, 然后將zip通過第三方接口上傳到影像平臺。當一個業務上傳成功后, 要刪除以這個業務號命名的目錄, 就是在刪除時出現了以上描述的問題, 那么到底是哪個環節的問題?
一個是拷貝文件, 一個是生成zip包, 無非這兩個地方, 所以, 統統加了賦空和回收的操作代碼如下:
fos.flush(); fos.close(); fis.close(); fis?=?null; fos?=?null; System.gc();public?boolean?zipMaterial(String?dir,?String?busNO) { File?directory?=?new?File(dir); File[]?files?=?directory.listFiles(); ? try { FileOutputStream?output?=?new?FileOutputStream(new?File(dir?+?busNO +?".zip")); ZipOutputStream?out?=?new?ZipOutputStream(new?BufferedOutputStream( output)); ? for?(int?i?=?0;?i?再次運行測試后,就可以了。可見如果是文件, 可以刪除,?但如果是目錄, 必須是空的才可以刪除。
以上就是小編今天的分享了,希望可以幫助到大家。