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


首先注意以下問題:

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

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

  3. 刪除文件夾之前先刪除文件夾下的所有文件(遞歸解決)

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

 

// 輸出文件流
                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;
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM