/** * Delete all the files with matching the specified {@link FilenameFilter} in the specified directory. * The method can work recursively. * * @param sourceDirectory the directory to delete files from. * @param filter the {@link FilenameFilter} to use for selecting files to delete. * @param recursive boolean that specifies if we want to delete files recursively or not. * @return */ public static boolean deleteDirectory(File sourceDirectory, FilenameFilter filter, boolean recursive, boolean deleteItself) { inputNotNull(sourceDirectory,filter); if(!sourceDirectory.exists()||!sourceDirectory.canRead()||!sourceDirectory.isDirectory()) throw new IllegalStateException("Source is not in a legal state."); final File[] files = (filter != null ? sourceDirectory.listFiles(filter) : sourceDirectory.listFiles()); for (File file:files) { if (file.isDirectory()) { if(recursive) deleteDirectory(file, filter,recursive,deleteItself); } else { if(!file.delete()) return false; } } return deleteItself?sourceDirectory.delete():true; }
/** * Delete all the files with matching the specified {@link FilenameFilter} in the specified * directory. The method can work recursively. * * @param sourceDirectory the directory to delete files from. * @param filter the {@link FilenameFilter} to use for selecting files to delete. * @param recursive boolean that specifies if we want to delete files recursively or not. */ public static boolean deleteDirectory( File sourceDirectory, FilenameFilter filter, boolean recursive, boolean deleteItself) { inputNotNull(sourceDirectory, filter); if (!sourceDirectory.exists() || !sourceDirectory.canRead() || !sourceDirectory.isDirectory()) throw new IllegalStateException("Source is not in a legal state."); final File[] files = (filter != null ? sourceDirectory.listFiles(filter) : sourceDirectory.listFiles()); for (File file : files) { if (file.isDirectory()) { if (recursive) { deleteDirectory(file, filter, recursive, deleteItself); } } else { if (!file.delete()) return false; } } return !deleteItself || sourceDirectory.delete(); }