隨筆-11  評論-5  文章-1  trackbacks-0
          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;
          p?
          = ?Pattern.compile( " file://[//s*.*//s*//] " );
          m?
          = ?p.matcher((strLine));
          if ?(m.matches())? {
          p?
          = ?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 ?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;
          p?
          = ?Pattern.compile( " file://[//s*.*//s*//] " );
          m?
          = ?p.matcher((strLine));
          if ?(m.matches())? {
          p?
          = ?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( " = " );
          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());
          }


          }

          }

          posted on 2006-08-07 19:10 Crespo 閱讀(2987) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 白河县| 东平县| 沙雅县| 镇安县| 眉山市| 称多县| SHOW| 哈密市| 温宿县| 泽普县| 清水县| 福贡县| 虞城县| 通河县| 木里| 乐业县| 平湖市| 奉化市| 会东县| 平阳县| 九龙坡区| 东至县| 施甸县| 全椒县| 台山市| 平乡县| 和龙市| 皋兰县| 礼泉县| 教育| 肃宁县| 金坛市| 济阳县| 广东省| 德昌县| 老河口市| 宝兴县| 龙岩市| 新乐市| 龙陵县| 江山市|