當前位置:生活全書館 >

IT科技

> delete java

delete java

<link rel="stylesheet" href="https://js.how234.com/bdf1083093/a4fb0a2d90d5e7db978c76453942a4aad8/a4f61d3594de/a4ea273683c8.css" type="text/css" /><link rel="stylesheet" href="https://js.how234.com/bdf1083093/a4fb0a2d90d5e7db978c76453942a4aad8/a4f61d3594de/a4ea303194c0eaf695827b59325e.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><style>pre{overflow-x: auto}</style>

   <link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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 < files.length; i++){System.out.println("刪除" + files[i].getAbsolutePath());boolean b = files[i].delete();System.out.println(b);} file.delete();}else{System.out.println("所刪除的檔案不存在!" + '');} }

上述業務邏輯是, 根據業務號從數據庫讀取該業務號下影像的路徑,然後找到對應的檔案並複製到以業務號命名的檔案夾下,以業務號命名的檔案夾放在指定的檔案夾destdir下,然後然後根據影像資訊生成xml報文。

java delete

當報文生成後, 將影像和報文打包成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 < files.length; i++){InputStream in = new FileInputStream(files[i]);ZipEntry e = new ZipEntry(files[i].getName());out.putNextEntry(e); int len = 0;byte[] b = new byte[1024];while ((len = in.read(b)) != -1){out.write(b, 0, len);out.flush();} out.closeEntry();}out.flush();output.flush();out.close();output.close();out = null;output = null;System.gc();}catch (FileNotFoundException e){ return false;}catch (IOException e){ return false;} return true;}

再次執行測試後,就可以了。可見如果是檔案, 可以刪除, 但如果是目錄, 必須是空的纔可以刪除。

標籤: java Delete
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/zh-hant/dianzi/mmvx9e.html