当前位置: 首页 > 工具软件 > Bukkit > 使用案例 >

bukkit mysql_Bukkit插件开发-基础的数据读写操作

白宏大
2023-12-01

在开发Bukkit插件时,不可避免的需要存储和读取一些数据,以下介绍一些基本的数据交换方法。

一、使用yaml

学习Bukkit插件开发时一定会学到config.yml和plugin.yml的使用

yml文件是Bukkit的配置文件格式(也是一种较为通用的配置文件格式)

yaml语法对于新手腐竹来说较为简单直观

yml文件的读写在网上有很多,以下提供一个简单的实例File file = new File(plugin.getDataFolder(), "example.yml");

//plugin指这个插件的主类实例

if (!file.getParentFile().exists()) {

// 如果父目录不存在,创建父目录(即/plugins/插件名字)

file.getParentFile().mkdirs();

}

if (!file.exists()) {

//文件不存在则创建一个新的文件

try {

file.createNewFile();

//创建文件

Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");

//创建输出流

writer.write("example: 233");

//此处example的双引号可选

//写入中文请使用双引号以免读取“半个字”出错

writer.flush();

writer.close();

//向文件内写入一行“example: 233”

}

catch(Exception e){

e.printStackTrace();

}

FileConfiguration example = YamlConfiguration.loadConfiguration(file);

//读取文件

assert (int) example.get("example") == 233;

二、使用json

一般json用于数据交换,比较轻量(xml一般用于web开发)

但json最好不要用来作为配置文件,因为手动去修改时可能会出错

使用json作为配置文件的包括ColorMOTD等插件,可自行反编译查看其实现方法

*请注意!Bukkit使用的是谷歌的gson!在classloader中不会加载一些另外的fastjson等库!

请一定使用gson去解析json!否则编译时不会出错但是一旦运行就会出现NoClassDefFoundError!

如何添加gson依赖可以在网上找到

创建、写入json文件File file = new File(plugin.getDataFolder(), "example.json");

if (!file.getParentFile().exists()) {

// 如果父目录不存在,创建父目录

file.getParentFile().mkdirs();

}

if (!file.exists()) {

try {

file.createNewFile();

Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");

Map map = new HashMap();

map.put("Example", 233);

//创建一个Map,加入一个键值对,键为Example,值为233

Gson gson = new GsonBuilder().create();

String jsonString = gson.toJson(map);

//转换成json字符串

//插件开发中常用的列表、Map等都可以转换成json字符串

write.write(jsonString);

write.flush();

write.close();

//写入这个json字符串

} catch (Exception e) {

e.printStackTrace();

}

}

直接将某个对象(此处是Map)写入json文件Map m ;//以Map来示范

m.put("example","another example");

JSONObject jsonObject = new JSONObject(m);

//转为json对象

String jsonString = jsonObject.toJSONString();

//转为json字符串

File jsonFile = new File(plugin.getDataFolder(), "example.json");

//注意判断文件是否存在,见上方

//plugin是主类实例

try {

Writer write = new OutputStreamWriter(new FileOutputStream(jsonFile), "UTF-8");

write.write(jsonString);

write.flush();

write.close();

} catch (Exception e) {

e.printStackTrace();

}

读取json文件File jsonFile = new File(plugin.getDataFolder(), "example.json");

//plugin是主类实例

JsonObject json = new JsonObject();

try {

json = new JsonParser().parse(new JsonReader(new FileReader(jsonFile))).getAsJsonObject();

//使用gson的方法去简便地读取文件内容

//鸣谢m8_mve

} catch (Exception e) {

e.printStackTrace();

}

Gson gson = new GsonBuilder().create();

Map jsonMap = gson.fromJson(json, Map.class);

//将json字符串转为Map

注:json = new JsonParser().parse(new JsonReader(new FileReader(jsonFile))).getAsJsonObject();

如果需要更强大的数据管理,那么建议使用数据库。

 类似资料: