首页 > 应用开发 > Java > java 读写 ini 配置文件
package
org.fh.util;import
java.io.BufferedReader;import
java.io.BufferedWriter;import
java.io.FileReader;import
java.io.FileWriter;import
java.io.IOException;import
java.net.URLDecoder;import
java.util.regex.Matcher;import
java.util.regex.Pattern;/**
* 说明:ini文件读写操作工具类
* 作者:FH Admin
* from:fhadmin.cn
*/public
class
IniFileUtil {
/**
* 从ini配置文件中读取变量的值
* @param file 配置文件的路径
* @param section 要获取的变量所在段名称
* @param variable 要获取的变量名称
* @param defaultValue 变量名称不存在时的默认值
* @return 变量的值
* @throws IOException 抛出文件操作可能出现的io异常
*/
public
static
String readCfgValue(String file, String section, String variable, String defaultValue)
throws
IOException {
String strLine, value =
""
;
BufferedReader bufferedReader =
new
BufferedReader(
new
FileReader(URLDecoder.decode(file,
"UTF-8"
)));
//解决中文路径乱码
boolean
isInSection =
false
;
try
{
while
((strLine = bufferedReader.readLine()) !=
null
) {
strLine = strLine.trim();
strLine = strLine.split(
"[;]"
)[
0
];
Pattern p;
Matcher m;
p = Pattern.compile(
"\\[\\w+]"
);
// Pattern.compile("file://[//s*.*//s*//]");
m = p.matcher((strLine));
if
(m.matches()) {
p = Pattern.compile(
"\\["
+ section +
"\\]"
);
// Pattern.compile("file://[//s*" + section +
// "file://s*//]");
m = p.matcher(strLine);
if
(m.matches()) {
isInSection =
true
;
}
else
{
isInSection =
false
;
}
}
if
(isInSection ==
true
) {
strLine = strLine.trim();
String[] strArray = strLine.split(
"="
);
if
(strArray.length ==
1
) {
value = strArray[
0
].trim();
if
(value.equalsIgnoreCase(variable)) {
value =
""
;
return
value;
}
}
else
if
(strArray.length ==
2
) {
value = strArray[
0
].trim();
if
(value.equalsIgnoreCase(variable)) {
value = strArray[
1
].trim();
return
value;
}
}
else
if
(strArray.length >
2
) {
value = strArray[
0
].trim();
if
(value.equalsIgnoreCase(variable)) {
value = strLine.substring(strLine.indexOf(
"="
) +
1
).trim();
return
value;
}
}
}
}
}
finally
{
bufferedReader.close();
}
return
defaultValue;
}
/**
* 修改ini配置文件中变量的值
* @param file 配置文件的路径
* @param section 要修改的变量所在段名称
* @param variable 要修改的变量名称
* @param value 变量的新值
* @throws IOException 抛出文件操作可能出现的io异常
*/
public
static
boolean
writeCfgValue(String file, String section, String variable, String value)
throws
IOException {
String fileContent, allLine, strLine, newLine;
String getValue =
null
;
BufferedReader bufferedReader =
new
BufferedReader(
new
FileReader(URLDecoder.decode(file,
"UTF-8"
)));
//解决中文路径乱码
boolean
isInSection =
false
;
boolean
canAdd =
true
;
fileContent =
""
;
try
{
while
((allLine = bufferedReader.readLine()) !=
null
) {
allLine = allLine.trim();
strLine = allLine.split(
";"
)[
0
];
Pattern p;
Matcher m;
p = Pattern.compile(
"\\[\\w+]"
);
m = p.matcher((strLine));
if
(m.matches()) {
p = Pattern.compile(
"\\["
+ section +
"\\]"
);
m = p.matcher(strLine);
if
(m.matches()) {
isInSection =
true
;
}
else
{
isInSection =
false
;
}
}
if
(isInSection ==
true
) {
strLine = strLine.trim();
String[] strArray = strLine.split(
"="
);
getValue = strArray[
0
].trim();
if
(getValue.equalsIgnoreCase(variable)) {
newLine = getValue +
"="
+ value;
fileContent += newLine;
while
((allLine = bufferedReader.readLine()) !=
null
) {
fileContent +=
"\r\n"
+ allLine;
}
bufferedReader.close();
canAdd =
false
;
BufferedWriter bufferedWriter =
new
BufferedWriter(
new
FileWriter(file,
false
));
bufferedWriter.write(fileContent);
bufferedWriter.flush();
bufferedWriter.close();
return
true
;
}
}
fileContent += allLine +
"\r\n"
;
}
if
(canAdd) {
String str = variable +
"="
+ value;
fileContent += str +
"\r\n"
;
BufferedWriter bufferedWriter =
new
BufferedWriter(
new
FileWriter(file,
false
));
bufferedWriter.write(fileContent);
bufferedWriter.flush();
bufferedWriter.close();
}
}
catch
(IOException ex) {
throw
ex;
}
finally
{
bufferedReader.close();
}
return
false
;
}
public
static
void
main(String[] args) {
try
{
/*;文件事例
[Client]
;客户端版本号
version=0001
;设备号
devNum=6405*/
String value = IniFileUtil.readCfgValue(
"L:/a.ini"
,
"Client"
,
"devNum"
,
"1"
);
System.out.println(value);
}
catch
(IOException e) {
e.printStackTrace();
}
} } |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31558068/viewspace-2851458/
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70012648/viewspace-2851709/ ,如需转载,请注明出处,否则将追究法律责任。