weaver      2004/01/15 08:05:23

  Modified:    portal/src/java/org/apache/jetspeed/util DirectoryUtils.java
  Log:
  Simplified the rmdir directory deletion algorithm.  Using example algorithm
  found in the Java Developers Almanac: 
http://javaalmanac.com/egs/java.io/DeleteDir.html
  
  Revision  Changes    Path
  1.2       +58 -63    
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/util/DirectoryUtils.java
  
  Index: DirectoryUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/util/DirectoryUtils.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DirectoryUtils.java       28 Jul 2003 23:47:53 -0000      1.1
  +++ DirectoryUtils.java       15 Jan 2004 16:05:23 -0000      1.2
  @@ -74,41 +74,36 @@
               
       public static void main(String[] args)
       {
  -        DirectoryUtils.rmdir(args[0]);
  +        DirectoryUtils.rmdir(new File(args[0]));
       }
   
  -    /*
  +    /**
        *  Removes a directory and all subdirectories and files beneath it.
        *
        * @param directory The name of the root directory to be deleted.
        * @return boolean If all went successful, returns true, otherwise false.
        * 
        */
  -    public static final boolean rmdir(String directory)
  +    public static final boolean rmdir(File dir)
       {    
  -        try
  -        {
  -            File dir = new File(directory);
  -            if (!dir.isDirectory())            
  -            {
  -                dir.delete();
  -                return true;
  -            }
  +             if (dir.isDirectory())
  +             {
  +                     String[] children = dir.list();
  +                     for (int i = 0; i < children.length; i++)
  +                     {
  +                             boolean success = rmdir(new File(dir, children[i]));
  +                             if (!success)
  +                             {
  +                                     return false;
  +                             }
  +                     }
  +             }
   
  -            deleteTraversal(directory);
  -
  -            dir.delete();
  -            return true;
  -
  -        }
  -        catch (Exception e)
  -        {
  -            log.error("Error in rmdir utility:" , e);
  -            return false;
  -        }
  +             // The directory is now empty so delete it OR it is a plain file
  +             return dir.delete();
       }
   
  -    /*
  +    /**
        *  Recursive deletion engine, traverses through all subdirectories, 
        *  attempting to delete every file and directory it comes across.
        *  NOTE: this version doesn't do any security checks, nor does it 
  @@ -117,45 +112,45 @@
        * @param path The directory path to be traversed.
        * 
        */            
  -    private static void deleteTraversal(String path)
  -    {
  -        File file = new File(path);
  -        if (file.isFile()) 
  -        {
  -            try 
  -            {
  -                file.delete();
  -            }
  -            catch (Exception e)
  -            {
  -                log.error("Failed to Delete file: " + path + " : " , e);
  -                file.deleteOnExit(); // try to get it later...
  -            }
  -        } 
  -        else if (file.isDirectory()) 
  -        {
  -            if (!path.endsWith(File.separator))
  -                path += File.separator;
  -
  -            String list[] = file.list();
  -
  -            // Process all files recursivly
  -            for(int ix = 0; list != null && ix < list.length; ix++)
  -                deleteTraversal(path + list[ix]);
  -
  -            // now try to delete the directory
  -            try 
  -            {
  -                file.delete();
  -            }
  -            catch (Exception e)
  -            {
  -                log.error("Failed to Delete directory: " + path + " : " , e);
  -                file.deleteOnExit(); // try to get it later...
  -            }
  -            
  -        }
  -    }            
  +//    private static void deleteTraversal(String path)
  +//    {
  +//        File file = new File(path);
  +//        if (file.isFile()) 
  +//        {
  +//            try 
  +//            {
  +//                file.delete();
  +//            }
  +//            catch (Exception e)
  +//            {
  +//                log.error("Failed to Delete file: " + path + " : " , e);
  +//                file.deleteOnExit(); // try to get it later...
  +//            }
  +//        } 
  +//        else if (file.isDirectory()) 
  +//        {
  +//            if (!path.endsWith(File.separator))
  +//                path += File.separator;
  +//
  +//            String list[] = file.list();
  +//
  +//            // Process all files recursivly
  +//            for(int ix = 0; list != null && ix < list.length; ix++)
  +//                deleteTraversal(path + list[ix]);
  +//
  +//            // now try to delete the directory
  +//            try 
  +//            {
  +//                file.delete();
  +//            }
  +//            catch (Exception e)
  +//            {
  +//                log.error("Failed to Delete directory: " + path + " : " , e);
  +//                file.deleteOnExit(); // try to get it later...
  +//            }
  +//            
  +//        }
  +//    }            
   }
   
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to