001package com.basilv.core; 002 003 004import java.io.File; 005import java.io.IOException; 006 007/** 008 * Contains utility methods for working with Files. 009 */ 010public 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 file Cannot be null. If a file is specified, it is deleted. 031 */ 032 public static void deleteRecursively(File file) { 033 Assert.notNull("file", file); 034 035 if (file.isDirectory()) { 036 File[] files = file.listFiles(); 037 for (int i = 0; i < files.length; i++) { 038 deleteRecursively(files[i]); 039 } 040 } 041 deleteFile(file); 042 } 043 044 public static void deleteFile(File file) { 045 Assert.notNull("file", file); 046 047 if (!file.delete()) { 048 // Perhaps we couldn't delete the file because it no longer exists. 049 if (file.exists()) { 050 throw new RuntimeException("Unable to delete file '" + FileUtilities.getCanonicalPath(file) + "'."); 051 } 052 } 053 054 } 055}