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

  • 相关阅读:
    UML 基础: 组件图
    如何绘制 UML 活动图
    JVM简介
    【转】Adapter 模式
    用例建模技巧
    【转】JVM内存模型以及垃圾回收
    从UML到BPEL
    用例建模指南
    关于 Assigned
    符号和基本语法
  • 原文地址:https://www.cnblogs.com/CanWork/p/3329656.html
Copyright © 2011-2022 走看看