Bukkit插件编程中.yml配置文件的创建和读取

 1 package com.sklm.config;
 2 
 3 import java.io.BufferedOutputStream;
 4 import java.io.BufferedReader;
 5 import java.io.File;
 6 import java.io.FileNotFoundException;
 7 import java.io.FileOutputStream;
 8 import java.io.FileReader;
 9 import java.io.IOException;
10 import java.util.HashMap;
11 import java.util.Map;
12 
13 public class PluginConfig {
14 
15     public static HashMap<String, Object> configMap = new HashMap<String,Object>();
16     public static String configPath = null;
17     public PluginConfig() {
18         try {
19             this.configPath = this.createFile();
20             this.readConfig();
21         } catch (IOException e) {
22             // TODO Auto-generated catch block
23             e.printStackTrace();
24         }
25     }
26     /**
27      * 创建配置文件
28      * @return 返回创建文件的标准路径
29      * @throws IOException
30      */
31     public String createFile() throws IOException {
32         boolean hasFile = true;
33         File plugins = null;
34         File messageConfig = null;
35         File messageBoard = null;
36         plugins = new File("./plugins");
37         if(!plugins.exists()) {
38             plugins.mkdirs();
39         }else {
40             messageBoard = new File(plugins.getCanonicalPath(),"messageBoard");
41             if(!messageBoard.exists()) {
42                 messageBoard.mkdirs();
43             }else {
44                 messageConfig = new File(messageBoard.getCanonicalPath(),"messageBoardConfig.yml");
45                 if(!(hasFile=messageConfig.exists())) {
46                     messageConfig.createNewFile();
47                 }
48             }
49         }
50         if(!hasFile) {
51             //Bukkit.getLogger().info("BufferedOutputStream"+messageConfig.getCanonicalPath());
52             FileOutputStream fos = new FileOutputStream(messageConfig.getCanonicalPath().toString()); // 
53             BufferedOutputStream bos = new BufferedOutputStream(fos);
54             bos.write(new String(" timerOut=10").getBytes());
55             if(bos != null) {
56                 bos.close();
57             }
58         }
59         return messageConfig.getCanonicalPath().toString();
60     }
61     /**
62      * 读取配置文件中的信息
63      * @author SK_03
64      * 
65      */
66     public void readConfig() {
67         String path;
68         try {
69             int len = 0;
70             path = this.createFile();
71             FileReader fr = new FileReader(path);
72             BufferedReader br = new BufferedReader(fr);
73             while((len=br.read()) != -1) {
74                 String configInfo = br.readLine();
75                 if(configInfo != null && !(configInfo.contains("##"))) {  //如果读取的内容不为空或者不是注释,则执行下面语句
76                     //System.out.println(configInfo);
77                     String[] configArray = configInfo.split("=");
78                     //System.out.println(configArray[0]+configArray[1]);
79                     configMap.put(configArray[0], configArray[1]);
80                     //System.out.println(configArray[0].toString()+"="+configArray[1]);
81                 }
82             }
83             if(br != null) {
84                 br.close();
85             }
86         } catch (FileNotFoundException e) {
87             // TODO Auto-generated catch block
88             e.printStackTrace();
89         }catch (IOException e) {
90             // TODO Auto-generated catch block
91             e.printStackTrace();
92         }
93     }
94     
95     
96     
97 }
原文地址:https://www.cnblogs.com/lihuibin/p/9027518.html