//注意:我的博客中的代码为自己所写,大家可以免费使用,但不要...
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 继续
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 继续