- 论坛徽章:
- 0
|
递归查找文件,可以参考一下这段代码。
- public static ClassLoader createClassLoader(String path, ClassLoader parent)
- throws Exception {
- List<File> jarList = new ArrayList<File>();
- getClassPath(jarList, new JarsFilter(), new File(path, "lib"));
- List<URL> urlList = new ArrayList<URL>();
- urlList.add(new URL("file:///" + path + "/classes/"));
- for (int i = 0; i < jarList.size(); ++i) {
- urlList.add(new URL("file:///"
- + ((File) jarList.get(i)).getCanonicalPath()));
- }
- return new URLClassLoader((URL[]) urlList.toArray(new URL[0]), parent);
- }
- public static void getClassPath(List<File> list, FilenameFilter filter,
- File f) {
- if (f.exists() && f.isDirectory()) {
- File[] ss = f.listFiles(filter);
- for (int i = 0; i < ss.length; ++i) {
- if (ss[i].isFile()) {
- list.add(ss[i]);
- } else if (ss[i].isDirectory()) {
- getClassPath(list, filter, ss[i]);
- }
- }
- }
- }
- public static class JarsFilter implements FilenameFilter {
- public boolean accept(File dir, String name) {
- File f = new File(dir, name);
- boolean isDir = f.isDirectory();
- boolean isFile = f.isFile();
- boolean isJar = name.toLowerCase().endsWith(".jar");
- boolean isZip = name.toLowerCase().endsWith(".zip");
- return (isFile && (isJar || isZip)) || isDir;
- }
- }
复制代码 |
|