您的位置:首页 > 编程语言 > Java开发

Java工具类(一):Ini文件简单读写

2017-03-07 00:00 330 查看

一、ini定义

INI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成。

二、ini示例

[Connect]
connect=test
max=1000
min=20
time=2017-01-06 12:00:57

其中[Connect]是节section,之下的为key,key由name与value两部分组成。

三、Java代码示例

在这里使用java原生去读写ini文件,按照ini的构成,我们可以先获取section之内的内容,然后根据=判断获取key的name与value放入集合map,方便之后的使用。一下代码是参考网上打出来的,因找不到出处,希望原作者原谅。

public class IniUtils {
// 定义一个Map存放获取到的值
private final static Map<String, Map<String, Object>> saveObject = new HashMap<String, Map<String, Object>>();

// 获取ini文件
@SuppressWarnings("deprecation")
final public static synchronized void openIni(String path) throws IOException {
DataInputStream ds = new DataInputStream(new FileInputStream(path));
String str = ds.readLine();
String section = null;
while (str != null) {
if (str.startsWith("[")) {
Map<String, Object> itemMap = new HashMap<String, Object>();
section = str.substring(1, str.length() - 1);
saveObject.put(section, itemMap);
} else {
Map<String, Object> itemMap = saveObject.get(section);
String key = str.substring(0, str.indexOf("="));
String value = str.substring(str.indexOf("=") + 1);
itemMap.put(key, value);
}

str = ds.readLine();
}
ds.close();
}

// 写入ini文件
final public static synchronized void writeIni(String name) throws IOException {
StringBuilder sb = new StringBuilder("");
for (String section : saveObject.keySet()) {
sb.append("[").append(section).append("]").append("\n");
Map<String, Object> map = saveObject.get(section);
Set<String> keySet = map.keySet();
for (String key : keySet) {
sb.append(key).append("=").append(map.get(key)).append("\n");
}

}

File file = new File(name);
if (!file.exists()) {
file.createNewFile();

}
try {

OutputStream os = new FileOutputStream(file);
os.write(sb.toString().getBytes());
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}

}

// 设值
final public static synchronized void setValue(String section, String key, Object value) {
Map<String, Object> sectionMap = saveObject.get(section);

if (sectionMap == null) {
sectionMap = new HashMap<String, Object>();
saveObject.put(section, sectionMap);
}
sectionMap.put(key, value);
}

// 获取值
final public static synchronized Object getValue(String section, String key) {
Object obj = null;
Map<String, Object> item = saveObject.get(section);
if (item != null) {
obj = item.get(key);
}
return obj;
}

}

工具类写完之后,我们可以写一个main进行简单的测试。获取文件内的max值。

public class Main {
public static void main(String args[]) throws IOException {
String path = "D:\\Connect.ini";
Ini.load(path);
String max = (String) Ini.getValue("Connect", "max");
System.out.println(max);
}

}


四、其他好用读写ini工具

1、Java INI package

2、ini4j

五、引用

1、java读写和修改ini文件汇总
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java工具类