    001    package com.basilv.core;
    002
    003
    004    import java.io.File;
    005    import java.io.IOException;
    006
    007    /**
    008     * Contains utility methods for working with Files.
    009     */
    010    public class FileUtilities
    011    {
    012
    013            /**
    014             * Return the canonical path, or the absolute path if an error occurs.
    015             * @param file  Cannot be null.
    016             * @return the full path of the file.
    017             */
    018            public static String getCanonicalPath(File file) {
    019                    Assert.notNull("file", file);
    020                    try {
    021                            return file.getCanonicalPath();
    022                    } catch (IOException e) {
    023                            return file.getAbsolutePath();
    024                    }
    025            }
    026
    027
    028            /**
    029             * Delete the specified directory and all its contents.
    030             * @param dir  Cannot be null. If a file is specified, it is deleted.
    031             */
    032            public static void deleteRecursively(File dir) {
    033                    Assert.notNull("dir", dir);
    034
    035                    if (dir.isDirectory()) {
    036                            File[] files = dir.listFiles();
    037                            for (int i = 0; i < files.length; i++) {
    038                                    deleteRecursively(files[i]);
    039                            }
    040                            dir.delete();
    041                    } else {
    042                            // Just a file so delete normally.
    043                            dir.delete();
    044                    }
    045            }
    046    }