我如何扫描文件夹中的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; }
}
在我看来,所有帮助都是很好的帮助。还要忽略那些糟糕的评论,让我更多地记住每种方法的作用。
答案 0 :(得分:0)
您可以使用Apache commons IOUtils和其中一个Filter来递归遍历目录并根据名称或扩展名匹配文件。
如果您不想要外部依赖项,那么标准库java.io.File还包含您可以使用的几种列表方法。