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部落格 ” ,連結:http://blog.itpub.net/70012648/viewspace-2851709/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用IniEditor讀寫INI型別配置檔案型別
- go 讀取.ini配置檔案Go
- Python常用配置檔案ini、json、yaml讀寫總結PythonJSONYAML
- 使用C#讀寫ini檔案C#
- C#關於讀寫INI檔案C#
- 透過python讀取ini配置檔案Python
- NPM酷庫047:ini,解析INI配置檔案NPM
- pyinstaller 打包後讀取 ini 配置檔案路徑錯誤,怎麼定位配置檔案
- MySQL檔案my.ini配置MySql
- python ini 配置檔案處理Python
- pytest配置檔案pytest.ini
- Mysql 配置檔案 my.iniMySql
- MySQL配置檔案my.ini在哪MySql
- Python之ini配置檔案詳解Python
- MySql5.7配置檔案my.ini 設定 my.ini檔案路徑MySql
- Java 字元流檔案讀寫Java字元
- python config配置檔案的讀寫Python
- java中讀取配置檔案Java
- Mysql配置檔案my.ini配置項詳解MySql
- Python 使用ConfigParser操作ini配置檔案教程。Python
- .NET程式配置檔案操作(ini,cfg,config)
- PHP配置檔案詳解php.iniPHP
- MySQL 配置檔案 (my.ini) 詳解MySql
- 好程式設計師Java培訓分享Java讀寫Properties配置檔案程式設計師Java
- VC++學習筆記---配置檔案(一) ini檔案和propritiesC++筆記
- Mysql資料庫配置檔案(my.ini)分析MySql資料庫
- 檔案排版(文字檔案讀寫)
- Java讀取properties配置檔案工具包Java
- Java使用commons-configuration讀取配置檔案Java
- 【自動化測試】Python 讀取 .ini 格式檔案Python
- php修改php.ini配置檔案中disable_functionsPHPFunction
- 檔案的讀寫
- Python——檔案讀寫Python
- keras讀寫檔案Keras
- 「Python」:檔案讀寫Python
- Golang 讀、寫檔案Golang
- Python 讀寫檔案Python
- SpringBoot2.0 redis生成組建和讀寫配置檔案Spring BootRedis