java程式碼刪除檔案__發現無法刪除
阿新 • • 發佈:2019-01-05
java程式碼刪除檔案__發現無法刪除
File file = new File(filePath);
if (file.exists() && file.isFile()) {
boolean flag = file.delete();
}
經過對比檢查發現 flag 為 false 並沒有刪除__
通過介面刪除,報錯如圖__被另一個程序佔用
解決方案一:
強制回收資源,然後刪除
public static void delFile(String filePath) { if (StringUtils.isNotBlank(filePath)) { File file = new File(filePath); if (file.exists() && file.isFile()) { boolean flag = file.delete(); if (!flag) { System.gc();//系統進行資源強制回收 boolean f = file.delete(); System.out.println(f); } } } }
方案二:
可能原因執之前對此檔案的操作劉沒有關閉,需要關閉流
public void createDoc(Map<String, Object> dataMap, String downloadType, String savePath) { Writer out = null; try { //載入需要裝填的模板 Template template = null; //載入模板檔案 configure.setClassForTemplateLoading(this.getClass(), "/com/sgcc/fsp/manage/web/templates"); //設定物件包裝器 configure.setObjectWrapper(new DefaultObjectWrapper()); //設定異常處理器 configure.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER); //定義Template物件,注意模板型別名字與downloadType要一致 template = configure.getTemplate(downloadType + ".xml"); //輸出文件 File outFile = new File(savePath); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); template.process(dataMap, out); outFile.delete(); } catch (Exception e) { e.printStackTrace(); }finally { //此處需要關閉流___關閉流後可以正常刪除呢 try { out.close(); } catch (IOException e) { e.printStackTrace(); } } }