解決File.Delete()刪除不掉文件

首先注意如下問題:網絡

  1. 此文件被使用的時候沒法刪除(好比網絡輸出沒關閉流)spa

  2. 判斷此文件是否存在再作刪除(exists)debug

  3. 刪除文件夾以前先刪除文件夾下的全部文件(遞歸解決)code

  4. 判斷是否刪除成功會有返回值,文件名錯了的話,刪除文件不會報錯。(new File("x://123.txt"),可是123.txt不存在,不報錯)blog

 

// 輸出文件流
                ou = resp.getOutputStream();
                in = report.getInputStream();
                int bytes = 0;
                byte[] bufferOut = new byte[1024];
                while ((bytes = in.read(bufferOut)) != -1) {
                    ou.write(bufferOut, 0, bytes);
                }
                in.close();
                ou.flush();
                ou.close();//關掉輸出流,不然文件沒法刪除
 
/**
     * 刪除報表包含的臨時文件
     */
    public void delete() {
        if (files != null) {
            Iterator<File> iter = files.iterator();
            while (iter.hasNext()) {
                File temp = iter.next();
                if(temp.exists()){
                    temp.delete();
                    logger.debug("文件:" + temp.getAbsolutePath() + " 刪除成功!");
                }else{
                    logger.debug("文件:" + temp.getAbsolutePath() + "不存在!");
                }
            }
            files = null;
        }
        if (file != null) {
            if(file.exists()){
                file.delete();
                logger.debug("文件:" + file.getAbsolutePath() + " 刪除成功!");
                file = null;
            }else{
                logger.debug("文件:" + file.getAbsolutePath() + " 不存在!");
            }
            file = null;
        }
    }
相關文章
相關標籤/搜索