1. 程式人生 > >java程式碼刪除檔案__發現無法刪除

java程式碼刪除檔案__發現無法刪除

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();
            }
        }
    }