package com.ximple.eofms.util; import java.io.File; import java.io.FileFilter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class FileUtils { public static List recurseDir(File dir, FileFilter filter) { return recurseInDirFrom(dir, filter); } private static ArrayList recurseInDirFrom(File dirItem, FileFilter filter) { ArrayList result = new ArrayList(); File[] list; if (filter.accept(dirItem)) { result.add(dirItem); } if (dirItem.isDirectory()) { list = dirItem.listFiles(); for (File item : list) { result.addAll(recurseInDirFrom(item, filter)); } } return result; } public static List recurseDir(String dir) { return recurseDir(dir, null); } public static List recurseDir(String dir, String suffix) { String result, _result[]; result = recurseInDirFrom(dir, suffix); _result = result.split("\\|"); return Arrays.asList(_result); } private static String recurseInDirFrom(String dirItem, String suffix) { File file; String list[]; StringBuilder result = new StringBuilder(dirItem); file = new File(dirItem); if (file.isDirectory()) { list = file.list(); for (String item : list) { if (suffix == null) result.append("|").append(recurseInDirFrom(dirItem + File.separatorChar + item, suffix)); else { if (item.toLowerCase().endsWith(suffix)) { result.append("|").append(recurseInDirFrom(dirItem + File.separatorChar + item, suffix)); } } } } return result.toString(); } }