package com.sklm.config;

 import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map; public class PluginConfig { public static HashMap<String, Object> configMap = new HashMap<String,Object>();
public static String configPath = null;
public PluginConfig() {
try {
this.configPath = this.createFile();
this.readConfig();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 创建配置文件
* @return 返回创建文件的标准路径
* @throws IOException
*/
public String createFile() throws IOException {
boolean hasFile = true;
File plugins = null;
File messageConfig = null;
File messageBoard = null;
plugins = new File("./plugins");
if(!plugins.exists()) {
plugins.mkdirs();
}else {
messageBoard = new File(plugins.getCanonicalPath(),"messageBoard");
if(!messageBoard.exists()) {
messageBoard.mkdirs();
}else {
messageConfig = new File(messageBoard.getCanonicalPath(),"messageBoardConfig.yml");
if(!(hasFile=messageConfig.exists())) {
messageConfig.createNewFile();
}
}
}
if(!hasFile) {
//Bukkit.getLogger().info("BufferedOutputStream"+messageConfig.getCanonicalPath());
FileOutputStream fos = new FileOutputStream(messageConfig.getCanonicalPath().toString()); //
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(new String(" timerOut=10").getBytes());
if(bos != null) {
bos.close();
}
}
return messageConfig.getCanonicalPath().toString();
}
/**
* 读取配置文件中的信息
* @author SK_03
*
*/
public void readConfig() {
String path;
try {
int len = 0;
path = this.createFile();
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
while((len=br.read()) != -1) {
String configInfo = br.readLine();
if(configInfo != null && !(configInfo.contains("##"))) { //如果读取的内容不为空或者不是注释,则执行下面语句
//System.out.println(configInfo);
String[] configArray = configInfo.split("=");
//System.out.println(configArray[0]+configArray[1]);
configMap.put(configArray[0], configArray[1]);
//System.out.println(configArray[0].toString()+"="+configArray[1]);
}
}
if(br != null) {
br.close();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

Bukkit插件编程中.yml配置文件的创建和读取的更多相关文章

  1. SpringBoot中yml配置文件

    1.yml配置文件书写格式 格式是在普通配置文件中以“.”分割的属性名称,该为“: ”和换行. 例子: //普通格式 spring.datasource.driver-class-name=com.m ...

  2. Spring Boot中yml配置文件Map集合注入及使用方式

    yml配置文件 maps: "{key1: 'value1', key2: 'value2'}" java中 @Value("#{${maps}}") priv ...

  3. Spring Boot 中yml配置文件

    步骤一:yml格式 现在大家发现,在springboot里还是要用到配置文件的. 除了使用.properties外,springboot还支持 yml格式. 个人觉得yml格式的可读性和..prope ...

  4. Bukkit插件编程之检测玩家受到的伤害是来自投射类武器还是近身武器

    package com.sklm.lhb.listener; import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; impo ...

  5. 《python核心编程》笔记——文件的创建、读取和显示

    创建文件(makeTextFile.py)脚本提醒用户输入一个尚不存在的文件名,然后由用户输入文件每一行,最后将所有文本写入文本文件 #!/usr/bin/env python 'makeTextFi ...

  6. jsp中excel文件的创建与读取

    1.创建excel文件//这里的jxl不是java的标准jar包,需要在项目中另外加载 import jxl.Workbook; import jxl.write.Label; import jxl. ...

  7. (蓝牙)网络编程中,使用InputStream read方法读取数据阻塞的解决方法

    问题如题,这个问题困扰了我好几天,今天终于解决了,感谢[1]. 首先,我要做的是android手机和电脑进行蓝牙通信,android发一句话,电脑端程序至少就要做到接受到那句话.android端发送信 ...

  8. Qt多线程编程中的对象线程与函数执行线程

    近来用Qt编写一段多线程的TcpSocket通信程序,被其中Qt中报的几个warning搞晕了,一会儿是说“Cannot create children for a parent that is in ...

  9. 初探Delphi中的插件编程

    前言 我写Delphi程序是从MIS系统入门的,开始尝试子系统划分的时候采用的是MDI窗体的结构.随着系统功能的扩充,不断有新的子系统加入系统中,单个工程会变得非常大,每次做一点修改都要重新编译,单个 ...

随机推荐

  1. php之函数

    scope(空间) unpack (解压) Traversable (穿越) performance(性能) experiment (检验) properties (属性) trailing (尾随) ...

  2. [potatos][flex][TBC] 语义分析词法分析 flex

    FLEX: The Fast Lexical Analyzer https://github.com/westes/flex 这并不是我的人生中第一次遇见flex,好多工程中,我都发现他们用到了fle ...

  3. Flash builder 、flash cs6、 as 3.0研究

    1.Flash/Actionscript3 载入资源文件方法考 http://zengrong.net/post/1107.htm 2.使用Flash Professional CS5和Flash B ...

  4. Python3+Selenium环境配置

    一.所需工具 1.Python3.6安装包 2.Selenium安装包(selenium-server-standalone-3.8),如果是Python3的话可以不用下载selenium压缩包,Py ...

  5. LeetCode 1012 Complement of Base 10 Integer 解题报告

    题目要求 Every non-negative integer N has a binary representation.  For example, 5 can be represented as ...

  6. Qt::带返回值的信号发射方式

    一般来说,我们发出信号使用emit这个关键字来操作,但是会发现,emit并不算一个调用,所以它没有返回值.那么如果我们发出这个信号想获取一个返回值怎么办呢? 两个办法:1.通过出参形式返回,引用或者指 ...

  7. java 数组(一)

    java的数组操作和C#是一样的,不多说明. public class ArrayDemo{ public static void main(String[] args){ //数组的定义 数据类型[ ...

  8. SpringBoot-热部署Devtools

    热部署 什么是热部署 所谓的热部署:比如项目的热部署,就是在应用程序在不停止的情况下,实现新的部署 项目演示案例 @RestController @Slf4j public class IndexCo ...

  9. s3存储桶:s3可扩展的云存储

    S3(Simple Storage Service,简单存储服务),即可扩展的云存储,又称桶存储,S3 是一种面向 Internet 的存储服务.S3为任意类型的文件提供临时或永久的存储服务.用于存储 ...

  10. SQL优化之踩过的坑【一】

    正看资料看的过瘾,突然收到报警,说服务器负载太高,好吧,登录服务器看看,我擦嘞,还能不能愉快的玩耍了?下面是当时的负载情况 看见mysql使用cpu已经到了2000,io没有等待.说明应该没有大的临时 ...