JAVA 文件无法删除怪异解决 .delete()无效,但返回true 递归删除文件

       最近做一个项目,springMVC   一个类文件上传后,另一类对该文件操作后删除,

        file.delete(),打印返回true,但是文件没有被成功删除

       手动删除,提示正在被jvm占用。 

        怀疑操作流没有关闭,检查,未发现。

        改用FileUtils.deleteQuietly(),问题依旧。

        怀疑引用类有未知bug,于是专门写一个类,只进行删除操作,问题依旧。

        正在烦躁,无意间将web窗口重启,一直是用jetty跑的,这次无意选了tomcat

        奇迹出现,问题解决了。回到jetty问题复现。

        不知道原因,google未果……算是多了一种解决问题的思路,代码上找不到突破口,换换容器试试,说不定柳暗花明。

         提供一个文件删除的类。备用。

        




public class Delfile {  
  
 /** 
  * 删除某个文件夹下的所有文件夹和文件 
  * 
  * @param delpath 
  *            String 
  * @throws FileNotFoundException 
  * @throws IOException 
  * @return boolean 
  */  
 public static boolean deletefile(String delpath) throws Exception {  
  try {  
  
   File file = new File(delpath);  
   // 当且仅当此抽象路径名表示的文件存在且 是一个目录时,返回 true  
   if (!file.isDirectory()) {  
    file.delete();  
   } else if (file.isDirectory()) {  
    String[] filelist = file.list();  
    for (int i = 0; i < filelist.length; i++) {  
     File delfile = new File(delpath + "\\" + filelist[i]);  
     if (!delfile.isDirectory()) {  
      delfile.getAbsoluteFile().delete();
      System.out  .println(delfile.getAbsolutePath() + "删除文件成功");  
     } else if (delfile.isDirectory()) {  
      deletefile(delpath + "\\" + filelist[i]);  
     }  
    }  
    System.out.println(file.getAbsolutePath()+"删除成功");  
    file.getAbsoluteFile().delete();
   }  
  
  } catch (FileNotFoundException e) {  
   System.out.println("deletefile() Exception:" + e.getMessage());  
  }  
  return true;  
 }  
  
 /** 
  * 输出某个文件夹下的所有文件夹和文件路径 
  * 
  * @param delpath 
  *            String 
  * @throws FileNotFoundException 
  * @throws IOException 
  * @return boolean 
  */  
 public static boolean readfile(String filepath)  
   throws FileNotFoundException, IOException {  
  try {  
  
   File file = new File(filepath);  
   System.out.println("遍历的路径为:" + file.getAbsolutePath());  
   // 当且仅当此抽象路径名表示的文件存在且 是一个目录时(即文件夹下有子文件时),返回 true  
   if (!file.isDirectory()) {  
    System.out.println("该文件的绝对路径:" + file.getAbsolutePath());  
    System.out.println("名称:" + file.getName());  
   } else if (file.isDirectory()) {  
    // 得到目录中的文件和目录  
    String[] filelist = file.list();  
    if (filelist.length == 0) {  
     System.out.println(file.getAbsolutePath()  
       + "文件夹下,没有子文件夹或文件");  
    } else {  
     System.out  
       .println(file.getAbsolutePath() + "文件夹下,有子文件夹或文件");  
    }  
    for (int i = 0; i < filelist.length; i++) {  
     File readfile = new File(filepath + "\\" + filelist[i]);  
     System.out.println("遍历的路径为:" + readfile.getAbsolutePath());  
     if (!readfile.isDirectory()) {  
      System.out.println("该文件的路径:"  
        + readfile.getAbsolutePath());  
      System.out.println("名称:" + readfile.getName());  
     } else if (readfile.isDirectory()) {  
      System.out.println("-----------递归循环-----------");  
      readfile(filepath + "\\" + filelist[i]);  
     }  
    }  
  
   }  
  
  } catch (FileNotFoundException e) {  
   System.out.println("readfile() Exception:" + e.getMessage());  
  }  
  return true;  
 }  
  
 
  
}  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值