浏览 2897 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-16
package com.cc.pub; import java.util.*; public class Config{ private Hashtable<String,String> table; private String sConfig; protected Config(){ table=new Hashtable<String,String>(); } public Config(String s){ this(); sConfig=s; } public int size(){ Enumeration e=table.keys(); int i=0; while(e.hasMoreElements()){ i++; e.nextElement(); } return i; } public void clear(){ if(table!=null){ table.clear(); } } public int readConfig(){ int iRet=0; table.clear(); ResourceBundle r=null; try{ r=ResourceBundle.getBundle(sConfig); Enumeration ks=r.getKeys(); String sKey,sValue; while(ks.hasMoreElements()){ sKey=(String)(ks.nextElement()); sValue=r.getString(sKey); sValue=sValue.trim(); if(sValue!=null && sValue.length()>0){ sValue=Tools.a2u(sValue); put(sKey,sValue); } } }catch(Exception e){ iRet=-1; } r=null; return iRet; } public void put(String sKey,String sValue){ if(sKey==null || sValue==null) return ; table.put(sKey.toLowerCase(),sValue); } public void list(){ Enumeration e=table.keys(); String s1,s2; while(e.hasMoreElements()){ s1=(String)(e.nextElement()); s2=get(s1); System.out.println("["+s1+"="+s2+"]"); } } public String get(String sKey){ //System.out.println("------Config_getString="+sKey); if(sKey==null) return null; sKey=sKey.toLowerCase(); Object o=table.get(sKey); return (String)o; } public int getInt(String sKey){ //System.out.println("------Config_getInt="+sKey); String s=get(sKey); //System.out.println("------Config_getInt="+sKey+",v="+s); int i=0; try{ i=Integer.parseInt(s); }catch(Exception e){} return i; } public boolean getBool(String sKey){ String s=get(sKey); if(s!=null && s.equalsIgnoreCase("true")){ return true; } int i=getInt(sKey); if(i>0){ return true; } return false; } public static void main(String []args){ Config c=new Config(args[0]); c.readConfig(); c.list(); } } //上面这个类是读取 properties 文件的, //下面的类可读取自定义的配置文件 package com.cc.pub; import java.io.*; public class XConfig extends Config{ private String sFileName; public XConfig(String sFile){ sFileName=sFile; } public int readConfig(){ clear(); int i=size(); try{ int iCut=0; RandomAccessFile f=new RandomAccessFile(sFileName,"r"); String sLine=""; String sBuf=""; boolean bNew=true; while(sLine!=null){ sLine=f.readLine(); if(sLine==null) break; sLine=Tools.a2u(sLine);//编码转换 sLine=Tools.trim(sLine); //空格等去除 if(sLine.startsWith("#")){ //忽略 "#" 开始的注释行 continue; } if(sLine.startsWith("//")){ //忽略 "//" 开始的注释行 continue; } if(sLine.length()==0){ //忽略空行 continue; } bNew=true; if(sLine.startsWith("/")){ //表示续前行 if(sLine.length()>1){ sLine=sLine.substring(1); //sLine=Tools.rtrim(sLine);//删除 "/" 之后的空格 }else{ sLine=""; } bNew=false; } iCut=sLine.indexOf("//"); if(iCut>0){ sLine=sLine.substring(0,iCut); //删除本行后面的注释 sLine=Tools.rtrim(sLine); if(sLine.length()==0){ //如果为空行,继续 continue; } } if(bNew){ addItem(sBuf); sBuf=sLine; }else{ sBuf+=sLine; } } addItem(sBuf); f.close(); i=size(); }catch(Exception e){ i=-1; e.printStackTrace(); } return i; } private void addItem(String sMsg){ if(sMsg==null || sMsg.length()==0){ return; } int i=sMsg.indexOf("="); if(i<1 || i==sMsg.length()-1){ return; } String sKey=sMsg.substring(0,i); String sValue=sMsg.substring(i+1); sKey=Tools.trim(sKey); sValue=Tools.trim(sValue); sValue=Tools.replace(sValue,"\\r","\r"); sValue=Tools.replace(sValue,"\\n","\n"); put(sKey,sValue); } public static void main(String []args){ XConfig xc=new XConfig(args[0]); xc.readConfig(); xc.list(); //System.out.println("["+Tools.rtrim(" Hello ")+"]"); //System.out.println("["+Tools.ltrim(" Hello ")+"]"); } } //一个例子(配置文件) #UDP中的信息长度最大字节数 udp_data_len=30000 #UDP超时长度(毫秒) udp_timeout=512 #本地UDP短口号 udp_port=3000 #服务器所在的IP地址 server_ip=192.168.0.123 #服务器服务端口号 server_port=8001 #信息尝试发送次数 try_num=3 #每次尝试之间的时间间隔(秒) try_period=10 //注释 cc_a=hello,how are you //note / and you! //note 继续 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |