Author: ozeigermann
Date: Sat Jul 28 10:46:21 2007
New Revision: 560580

URL: http://svn.apache.org/viewvc?view=rev&rev=560580
Log:
Completed file helpers

Modified:
    
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/util/FileHelper.java

Modified: 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/util/FileHelper.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/util/FileHelper.java?view=diff&rev=560580&r1=560579&r2=560580
==============================================================================
--- 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/util/FileHelper.java
 (original)
+++ 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/util/FileHelper.java
 Sat Jul 28 10:46:21 2007
@@ -30,18 +30,18 @@
  * @version $Id: FileHelper.java 493628 2007-01-07 01:42:48Z joerg $
  */
 public final class FileHelper {
-    
+
     public static byte[] readInto(File file) throws IOException {
         long length = file.length();
-        
+
         // XXX we can't do more than int
-        byte[] result = new byte[(int)length];
+        byte[] result = new byte[(int) length];
         InputStream is = new BufferedInputStream(new FileInputStream(file));
         is.read(result);
         return result;
     }
-    
-    public static void copyUsingNIO(File sourceFile, File destinationFile) 
throws IOException {
+
+    public static void copy(File sourceFile, File destinationFile) throws 
IOException {
         // try again using NIO copy
         FileInputStream fis = null;
         FileOutputStream fos = null;
@@ -62,23 +62,25 @@
         }
     }
 
-    public static boolean moveUsingNIO(File sourceFile, File destinationFile) 
throws IOException {
+    public static boolean move(File sourceFile, File destinationFile) throws 
IOException {
         // try fast file-system-level move/rename first
         boolean success = sourceFile.renameTo(destinationFile);
 
         if (!success) {
-            copyUsingNIO(sourceFile, destinationFile);
+            copy(sourceFile, destinationFile);
             success = sourceFile.delete();
         }
 
         return success;
     }
-    
+
     /**
      * Deletes a file specified by a path.
-     *  
-     * @param path path of file to be deleted
-     * @return <code>true</code> if file has been deleted, <code>false</code> 
otherwise
+     * 
+     * @param path
+     *            path of file to be deleted
+     * @return <code>true</code> if file has been deleted, <code>false</code>
+     *         otherwise
      */
     public static boolean deleteFile(String path) {
         File file = new File(path);
@@ -87,14 +89,105 @@
 
     /**
      * Checks if a file specified by a path exits.
-     *  
-     * @param path path of file to be checked
-     * @return <code>true</code> if file exists, <code>false</code> otherwise
+     * 
+     * @param path
+     *            path of file to be checked
+     * @return <code>true</code> if file exists, <code>false</code>
+     *         otherwise
      */
     public static boolean fileExists(String path) {
         File file = new File(path);
         return file.exists();
     }
 
+    public static void copyRecursive(File source, File target) throws 
IOException {
+        if (source.isDirectory()) {
+            if (!target.exists()) {
+                target.mkdirs();
+            }
+            if (target.isDirectory()) {
+
+                File[] files = source.listFiles();
+                for (int i = 0; i < files.length; i++) {
+                    File file = files[i];
+                    File targetFile = new File(target, file.getName());
+                    if (file.isFile()) {
+                        if (targetFile.exists()) {
+                            targetFile.delete();
+                        }
+                        copy(file, targetFile);
+                    } else {
+                        targetFile.mkdirs();
+                        copyRecursive(file, targetFile);
+                    }
+                }
+            }
+        } else {
+            if (!target.isDirectory()) {
+                if (!target.exists()) {
+                    File dir = target.getParentFile();
+                    if (!dir.exists() && !dir.mkdirs()) {
+                        throw new IOException("Could not create target 
directory: " + dir);
+                    }
+                    if (!target.createNewFile()) {
+                        throw new IOException("Could not create target file: " 
+ target);
+                    }
+                }
+                copy(source, target);
+            }
+        }
+    }
+
+    public static void moveRecursive(File source, File target) throws 
IOException {
+        // try fast file-system-level move/rename first
+        if (source.renameTo(target))
+            return;
+
+        if (source.isDirectory()) {
+            if (!target.exists()) {
+                target.mkdirs();
+            }
+            if (target.isDirectory()) {
 
+                File[] files = source.listFiles();
+                for (int i = 0; i < files.length; i++) {
+                    File file = files[i];
+                    File targetFile = new File(target, file.getName());
+                    if (file.isFile()) {
+                        if (targetFile.exists()) {
+                            targetFile.delete();
+                        }
+                        if (!file.renameTo(targetFile)) {
+                            copy(file, targetFile);
+                            file.delete();
+                        }
+                    } else {
+                        if (!targetFile.exists()) {
+                            if (!targetFile.mkdirs()) {
+                                throw new IOException("Could not create target 
directory: "
+                                        + targetFile);
+                            }
+                        }
+                        moveRecursive(file, targetFile);
+                    }
+                }
+                source.delete();
+            }
+        } else {
+            if (!target.isDirectory()) {
+                copy(source, target);
+                source.delete();
+            }
+        }
+    }
+
+    public static void removeRecursive(File toRemove) {
+        if (toRemove.isDirectory()) {
+            File fileList[] = toRemove.listFiles();
+            for (int a = 0; a < fileList.length; a++) {
+                removeRecursive(fileList[a]);
+            }
+        }
+        toRemove.delete();
+    }
 }



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

Reply via email to