创建一个ModuleConfig类。
public class ModuleConfig {
}
加上Config注解。
@Config("Modules")
public class ModuleConfig {
}
加入2个方法,分别写上Load和Save注解,分别是启动和退出的时候调用。
@Config("Modules")
public class ModuleConfig {
@Load
public void load() {
}
@Save
public void save() {
}
}
这是加载的方法。
@Load
public void load() {
for (ModuleProvider module : CF4M.MODULE.getAll()) {//遍历所有Module
JsonArray jsonArray = new JsonArray();
try {
jsonArray = new Gson().fromJson(read(CF4M.CONFIG.getByInstance(this).getPath()), JsonArray.class);//读取配置文件并存入JsonArray
} catch (IOException e) {
e.printStackTrace();
}
for (JsonElement jsonElement : jsonArray) {//遍历JsonArray
JsonObject jsonObject = jsonElement.getAsJsonObject();//获取JsonObject
if (module.getName().equals(new Gson().fromJson(jsonObject, JsonObject.class).get("name").getAsString())) {//判断当前Module的名字,是否和Json对象里的名字一样
if (jsonObject.get("enable").getAsBoolean()) {//如果一样,获取Module是否打开
module.enable();//打开的话就打开这个Module
}
module.setKey(jsonObject.get("key").getAsInt());//获取配置的Key并修改Module的快捷键
}
}
}
}
这个是保存的方法。
@Save
public void save() {
JsonArray jsonArray = new JsonArray();
for (ModuleProvider module : CF4M.MODULE.getAll()) {// 遍历所有Module
//获取Module的,名字、开启状态、快捷键,创建为JsonObject对象,添加到JsonArray
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name", module.getName());
jsonObject.addProperty("enable", module.getEnable());
jsonObject.addProperty("key", module.getKey());
jsonArray.add(jsonObject);
}
try {
write(CF4M.CONFIG.getByInstance(this).getPath(), new Gson().toJson(jsonArray));//写入Json文件
} catch (IOException e) {
e.printStackTrace();
}
}
读取文件和保存文件,用了apache的commons.io
private String read(String path) throws IOException {
return FileUtils.readFileToString(new File(path));
}
private void write(String path, String string) throws IOException {
FileUtils.writeStringToFile(new File(path), string, "UTF-8");
}