解决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;
        }
    }

 

转载于:https://www.cnblogs.com/ae6623/p/4416449.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值