七空幻音LOGO

七空幻音

Bukkit写出与读取其他配置文件2016-12-15 21:05:05

bukkit里面除了默认的config.yml之外还可以自己创建其他的配置文件。

默认的对配置文件操作的几个方法只是针对config.yml,要想实现让其他的配置文件也能读取写出也是很简单的

下面2个静态方法就可以用来实现这个功能

public static FileConfiguration load(JavaPlugin plugin,String fileName) {
        File file = new File(plugin.getDataFolder(), fileName);
        if (!(file.exists())) {//不存在
            try {//创建新的空文件
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return YamlConfiguration.loadConfiguration(file);
    }
    
    
    public static void saveDefaultConfig(JavaPlugin plugin,String fileName) {
        if (!new File(plugin.getDataFolder(), fileName).exists()) {//判断配置文件是否存在
            InputStream in = plugin.getResource(fileName);//读取jar文件里面的配置文件
            if (in == null) {//jar包里面没有这个配置文件
                plugin.getLogger().info("插件配置文件" + fileName + "不存在,无法读取");
                return;
            }
            //找到配置文件
            File file = new File(plugin.getDataFolder(), fileName);
            int lastIndex = fileName.lastIndexOf('/');
            //找到目录
            File dir = new File(plugin.getDataFolder(), fileName.substring(0, lastIndex >= 0 ? lastIndex : 0));

            if (!dir.exists()) {//判断是否村
                dir.mkdirs();//创建目录
            }
            try {
                //打开输出流
                OutputStream out = new FileOutputStream(file);
                byte[] buf = new byte[1024];
                int len;
                //循环写入到外面的配置去
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                //关闭流
                out.close();
                in.close();
            } catch (IOException ex) {
                return;
            }
        }
    }

上面2个方法实现了这个功能

load方法用于读取配置文件

saveDefaultConfig用于写出jar包里面的配置文件(前提是要存在)

然后在主类onEnable方法里面调用

public Configuration config;//用于保存读取的config
    public void onEnable(){
        //先写出默认配置文件
        Main.saveDefaultConfig(this,"data.yml");
        //然后再读取配置文件
        this.config = Main.load(this,"data.yml");
        //获取
        getLogger().info("a:"+this.config.getString("a"));
        getLogger().info("b:"+this.config.getInt("b"));
        getLogger().info("b:"+this.config.getBoolean("c"));
    }

QQ截图20161215210219.jpg

1条评论

    一共 1 页

    评论

    详细图片
    载入中...