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();
     }
    }

  • 相关阅读:
    Java基础加强--17.利用反射操作泛型VI【泛型类型变量的语义】【GenericDeclaration接口】【泛型接口TypeVariable】【通过Class反射解析泛型类】
    [G]ParameterizedType详解
    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一
    source insight遇到__attribute__解析不到函数
    Exif文件格式描述
    opencv python 匹配
    SQL知识累积
    ant 安装过程中问题记录
    useful-scripts
    excel 经验总结
  • 原文地址:https://www.cnblogs.com/CanWork/p/3329656.html
Copyright © 2011-2022 走看看