/** * List all files in this directory. * * @param recursive true to list files recursively. * @param filter the filter to use. */ public File[] listFiles(boolean recursive, FileFilter filter) { if (!isDirectory()) return null; // Simple list if (!recursive && filter == null) { String[] filenames = list(); File[] files = newFileArray(filenames.length); for (int i = 0; i < files.length; i++) { files[i] = newFile(this, filenames[i]); } return files; } // Complex list UtilList list = new UtilList(); addFilesToList(list, this, recursive, filter); File[] files = newFileArray(list.size()); list.toArray(files); return files; }
/** * Adds files from the given directory into the list. * * @param list the file list. * @param dir the directory. * @param recursive true to list files recursively. * @param filter the filter to use. */ private void addFilesToList(UtilList list, File dir, boolean recursive, FileFilter filter) { String[] filenames = dir.list(); for (int i = 0; i < filenames.length; i++) { File file = (File) newFile(dir, filenames[i]); // Recursive if (recursive) { if (file.isDirectory()) { addFilesToList(list, file, recursive, filter); } } // Filter if (filter != null) { if (!filter.accept(file)) { continue; } } // Add list.add(file); } }