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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux/windows 讀寫ini配置檔案LinuxWindows
- C#中讀寫INI配置檔案C#
- 使用IniEditor讀寫INI型別配置檔案型別
- c#讀寫ini檔案C#
- VB讀寫ini檔案 (轉)
- go 讀取.ini配置檔案Go
- VB.NET 讀寫ini檔案
- 使用C#讀寫ini檔案C#
- C#讀取ini配置檔案C#
- C#關於讀寫INI檔案C#
- C# winform中讀寫ini檔案C#ORM
- Python常用配置檔案ini、json、yaml讀寫總結PythonJSONYAML
- 透過python讀取ini配置檔案Python
- 讀寫INI檔案的四個函式 (轉)函式
- Linux下用C讀取INI配置檔案Linux
- java操作ini檔案Java
- NPM酷庫047:ini,解析INI配置檔案NPM
- Python讀取修改ini配置檔案[ConfigParser]Python
- mysql--my.ini配置檔案配置MySql
- winform c#寫ini檔案ORMC#
- 建立與讀取.ini檔案
- delphi讀取ini檔案 (轉)
- 【Java】讀寫文字檔案Java
- Mysql 配置檔案 my.iniMySql
- MySQL檔案my.ini配置MySql
- pyinstaller 打包後讀取 ini 配置檔案路徑錯誤,怎麼定位配置檔案
- Java 字元流檔案讀寫Java字元
- Java檔案操作 讀寫操作Java
- MySQL配置檔案my.ini在哪MySql
- python ini 配置檔案處理Python
- java中讀取配置檔案Java
- MySql5.7配置檔案my.ini 設定 my.ini檔案路徑MySql
- Java中檔案的讀寫操作Java
- Mysql配置檔案my.ini配置項詳解MySql
- 好程式設計師Java培訓分享Java讀寫Properties配置檔案程式設計師Java
- PHP配置檔案詳解php.iniPHP
- pytest配置檔案pytest.ini
- Python之ini配置檔案詳解Python