首页 > 编程语言 > 详细

用java读写ini配置文件

时间:2015-03-24 10:39:27      阅读:351      评论:0      收藏:0      [点我收藏+]

本文转载地址:

      http://www.blogjava.net/silvernapoleon/archive/2006/08/07/62222.html


 

 

技术分享 package  mytools;
技术分享
技术分享
import  java.io.BufferedReader;
技术分享
import  java.io.BufferedWriter;
技术分享
import  java.io.FileReader;
技术分享
import  java.io.FileWriter;
技术分享
import  java.io.IOException;
技术分享
import  java.util.regex.Matcher;
技术分享
import  java.util.regex.Pattern;
技术分享
技术分享
/**
技术分享* 这是个配置文件操作类,用来读取和设置ini配置文件
技术分享
@author  由月
技术分享
@version  2004-08-18
技术分享
*/

技术分享
public   final   class  ConfigurationFile  {
技术分享
/**
技术分享* 从ini配置文件中读取变量的值
技术分享
@param  file 配置文件的路径
技术分享
@param  section 要获取的变量所在段名称
技术分享
@param  variable 要获取的变量名称
技术分享
@param  defaultValue 变量名称不存在时的默认值
技术分享
@return  变量的值
技术分享
@throws  IOException 抛出文件操作可能出现的io异常
技术分享
*/

技术分享
public   static  String getProfileString(
技术分享String file,
技术分享String section,
技术分享String variable,
技术分享String defaultValue)
技术分享
throws  IOException  {
技术分享String strLine, value 
=   "" ;
技术分享BufferedReader bufferedReader 
=   new  BufferedReader( new  FileReader(file));
技术分享
boolean  isInSection  =   false ;
技术分享
try   {
技术分享
while  ((strLine  =  bufferedReader.readLine())  !=   null {
技术分享strLine 
=  strLine.trim();
技术分享strLine 
=  strLine.split( " [;] " )[ 0 ];
技术分享Pattern p;
技术分享Matcher m;
技术分享
=  Pattern.compile( " file://[//s*.*//s*//] " );
技术分享
=  p.matcher((strLine));
技术分享
if  (m.matches())  {
技术分享
=  Pattern.compile( " file://[//s* "   +  section  +   " file://s*//] " );
技术分享
=  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  setProfileString(
技术分享String file,
技术分享String section,
技术分享String variable,
技术分享String value)
技术分享
throws  IOException  {
技术分享String fileContent, allLine,strLine, newLine, remarkStr;
技术分享String getValue;
技术分享BufferedReader bufferedReader 
=   new  BufferedReader( new  FileReader(file));
技术分享
boolean  isInSection  =   false ;
技术分享fileContent 
=   "" ;
技术分享
try   {
技术分享
技术分享
while  ((allLine  =  bufferedReader.readLine())  !=   null {
技术分享allLine 
=  allLine.trim();
技术分享
if  (allLine.split( " [;] " ).length  >   1 )
技术分享remarkStr 
=   " ; "   +  allLine.split( " ; " )[ 1 ];
技术分享
else
技术分享remarkStr 
=   "" ;
技术分享strLine 
=  allLine.split( " ; " )[ 0 ];
技术分享Pattern p;
技术分享Matcher m;
技术分享
=  Pattern.compile( " file://[//s*.*//s*//] " );
技术分享
=  p.matcher((strLine));
技术分享
if  (m.matches())  {
技术分享
=  Pattern.compile( " file://[//s* "   +  section  +   " file://s*//] " );
技术分享
=  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  +   "   "   +  remarkStr;
技术分享fileContent 
+=  newLine  +   " \r\n " ;
技术分享
while  ((allLine  =  bufferedReader.readLine())  !=   null {
技术分享fileContent 
+=  allLine  +   " \r\n " ;
技术分享}

技术分享bufferedReader.close();
技术分享BufferedWriter bufferedWriter 
=
技术分享
new  BufferedWriter( new  FileWriter(file,  false ));
技术分享bufferedWriter.write(fileContent);
技术分享bufferedWriter.flush();
技术分享bufferedWriter.close();
技术分享
技术分享
return   true ;
技术分享}

技术分享}

技术分享fileContent 
+=  allLine  +   " \r\n " ;
技术分享}

技术分享 }
catch (IOException ex) {
技术分享
throw  ex;
技术分享}
  finally   {
技术分享bufferedReader.close();
技术分享}

技术分享
return   false ;
技术分享}

技术分享
/**
技术分享* 程序测试
技术分享
*/

技术分享
public   static   void  main(String[] args)  {
技术分享
// String value = Config.getProfileString("sysconfig.ini", "Option", "OracleDB", "default");
技术分享
// System.out.println(value);
技术分享
try   {
技术分享System.out.println(ConfigurationFile.setProfileString(
" d:/1.ini " " Settings " " SampSize " " 111 " ));
技术分享}
  catch  (IOException e)  {
技术分享System.out.println(e.toString());
技术分享}

技术分享
技术分享}

技术分享}

技术分享

用java读写ini配置文件

原文:http://www.cnblogs.com/hthuang/p/4361927.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!