zoukankan      html  css  js  c++  java
  • File对象占用,导致文件创建目录失败

    •    最近写了一个关于文件操作的java程序,简单来说包括两部分,一部分为文件夹的删除,紧接着的另外一部分为文件夹的创建。
    •    可以在测试的时候发现,有一定的概率,文件夹的创建会失败。
    •    结论是在利用文件句柄对文件夹进行复杂操作时(例如删除具有多层子文件夹的文件),随后对该文件夹的操作很可能会失败。
    •    最终解决方案为:如在删除文件夹后,仍需重新建立该文件夹目录,则在删除的时候只删除文件夹内的内容,保留文件夹本身,从未回避File对象占用的问题。
    •   如有其他解决方法或不同意见,望告知,万分感谢

       具体代码如下:其中1为C盘下一个具有多层子文件夹的测试文件,大小为30MB

    import java.io.File;

    public class Test{
     private static final String filename = "c:\1";
     
     public static void main(String args[])
     {
      File file = new File(filename);
      deleteFolder(file);

    //尝试进行垃圾回收,解决句柄占用,没作用
     System.gc();
      
      File file2 = new File(filename);
      if(!file2.exists())
      {
       if(!file2.mkdirs())
       {
        System.out.println("file is busy.");
       }
       else{
        System.out.println("file is not busy.");
       }
        
      }      
     }
     

    //删除文件夹
     private static boolean deleteFolder(File file){
      if(file.exists())
      {
       deleteFiles(file);
       return true;
      }
      return false;
     }
     
     private static boolean deleteFiles(File file)
     {
      if(!file.delete())
      {
       File[] files = file.listFiles();
       for(int i=0;i<files.length;i++)
       {
        deleteFiles(files[i]);
       }
      }
      return file.delete();
     }
    }

  • 相关阅读:
    Echarts使用笔记
    vue导出pdf
    mvn上传pom/jar至Nexus私服
    Linux下安装Redis
    国内首发,这款 Serverless 云原生一体化部署工具正式开源!
    使用云托管快速部署CMS内容管理系统
    云开发走进高校,腾讯云联合新工科联盟探索新生工程教育模式
    从0到3000万,TA们用云开发这样做
    基于 ThinkJS 的云开发体验
    使用小程序·云开发静态托管实现免鉴权h5跳转小程序
  • 原文地址:https://www.cnblogs.com/CanWork/p/3329656.html
Copyright © 2011-2022 走看看