Java - 搜索文件夹并加载.class文件

时间:2013-07-09 05:34:07

标签: java classloader

我如何扫描文件夹中的name.class文件,然后将它们加载到程序中的arraylist中。

我对我需要做什么有一个大概的了解,我只是不知道在代码中实现它需要用什么。

扫描文件夹 加载.class文件 使用array.add(new class(params))将类添加到arraylist中; 毕竟运行了类中的方法。

这是我将系统加载到客户端的模块(如果它们甚至被称为)的当前方式

 package pro.skid.Gabooltheking.Module;

import java.util.ArrayList;

public class ModuleLoader {

    public static ArrayList<Module> module = new ArrayList<Module>();
    public final ArrayList<Module> getModule(){ return module; }

    public static void startModule(){
        module.clear();
    }

        public final Module getModuleByName(String moduleName){  
            for( Module module : getModule()){
                if(module.getName().equalsIgnoreCase(moduleName)){ return module; }
            }
            return null;
        }

        public static void keyBind(int key){ 
            for(Module m : module){
                if(m.getKey() == key){
                    m.toggle();
                }
            }
        }

        public static void runModuleTick(){
            for(Module m : module){
                if(m.getState()){
                    m.onTick();
                }
            }
        }

}

这是抽象Module类的样子

package pro.skid.Gabooltheking.Module;

public abstract class Module {

    int key,color;
    String name;
    boolean state;

    /**
     * Set's the following variables
     * @param name- name of mod
     * @param key- keybind for mod
     * @param color- color in gui
     */
    public Module(String name, int key, int color){
        this.name = name;
        this.key = key;
        this.color = color;
    }
    /**
     * Set's the state of the mod to on or off.
     */
    public void toggle() 
    { state = !state; 
        if(this.getState())
            { 
             this.onToggle();
            }else{ 
             this.onDisable();
        } 
    }
    /**
     * Does something when mod is first toggled.
     * Does it only once.
     */
    public abstract void onToggle();

    /**
     * Does something when mod is disabled.
     * Does it only once.
     */
    public abstract void onDisable();

    /**
     * Does something when mod is toggled.
     * Loops untill hack is disabled.
     */
    public abstract void onTick();


    public String getName(){return this.name; }
    public int getKey(){ return this.key; }
    public int getColor(){ return this.color; }
    public boolean getState(){ return this.state; }
}

在我看来,所有帮助都是很好的帮助。还要忽略那些糟糕的评论,让我更多地记住每种方法的作用。

1 个答案:

答案 0 :(得分:0)

您可以使用Apache commons IOUtils和其中一个Filter来递归遍历目录并根据名称或扩展名匹配文件。

如果您不想要外部依赖项,那么标准库java.io.File还包含您可以使用的几种列表方法。