improved javadoc
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / file / IOHelper.java
old mode 100644 (file)
new mode 100755 (executable)
index a6dd05f..e7ee659
@@ -1,10 +1,10 @@
 /*
  * Svjatoslav Commons - shared library of common functionality.
- * Copyright ©2012-2013, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- * 
+ * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ *
  * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public License
- * as published by the Free Software Foundation.
+ * modify it under the terms of version 3 of the GNU Lesser General Public License
+ * or later as published by the Free Software Foundation.
  */
 
 package eu.svjatoslav.commons.file;
@@ -14,9 +14,38 @@ import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 
 public class IOHelper {
 
+       /**
+        * Deletes files and directories recursively. WARNING!!! Follows symlinks!!!
+        *
+        * @param file
+        *            directory to delete with entire contents.
+        *
+        * @throws IOException
+        *             if filesystem error happens
+        */
+       public static void deleteRecursively(final File file) throws IOException {
+               if (file.isDirectory()) {
+
+                       for (final File subFile : file.listFiles())
+                               deleteRecursively(subFile);
+
+                       if (!file.delete())
+                               throw new FileNotFoundException("Failed to delete directory: "
+                                               + file);
+
+                       return;
+               }
+
+               if (file.isFile())
+                       if (!file.delete())
+                               throw new FileNotFoundException("Failed to delete file: "
+                                               + file);
+       }
+
        public static byte[] getFileContents(final File file)
                        throws FileNotFoundException, IOException {
 
@@ -27,12 +56,30 @@ public class IOHelper {
                return result;
        }
 
+       public static String getFileContentsAsString(final File file)
+                       throws FileNotFoundException, IOException {
+               try {
+                       return new String(getFileContents(file), "UTF-8");
+               } catch (final UnsupportedEncodingException exception) {
+                       throw new RuntimeException(exception);
+               }
+       }
+
        /**
         * Compares new file content with old file content. If content in equal,
         * then leaves file as-is. If content differs, then overrides file with the
         * new content.
-        * 
+        *
+        * @param file
+        *            file to potentially overwrite
+        * @param newContent
+        *            new content
         * @return <code>true</code> if file was overwritten.
+        *
+        * @throws FileNotFoundException
+        *             if file is not found.
+        * @throws IOException
+        *             if error happens during file IO.
         */
        public static boolean overwriteFileIfContentDiffers(final File file,
                        final byte[] newContent) throws FileNotFoundException, IOException {