當前位置:科普知識站>IT科技>

java|delete

IT科技 閲讀(3.1W)

<link rel="stylesheet" href="https://js.how234.com/c506fb5b83/dc0cf946804bdf97ca5e71130ef8026b0a/dc01ee5e8440/dc1dd45d9356.css" type="text/css" /><link rel="stylesheet" href="https://js.how234.com/c506fb5b83/dc0cf946804bdf97ca5e71130ef8026b0a/dc01ee5e8440/dc1dc35a845ed2bac8507c0f05e4.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;}

再次運行測試後,就可以了。可見如果是文件, 可以刪除, 但如果是目錄, 必須是空的才可以刪除。