关于读取配置文件的问题 StreamTokenizer是将有分隔符的字符串分成一个一个的单个值如:abc def ghi分成:abc def ghi如果每个key后的值是一个:如:key1=abc考虑使用Property来解决问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么不用properties文件来做配置文件呢?用它很方便呀。Properties props = new Properties();props.load( new java.io.FileInputStream("xxx.properties"));int num = 1;String[] key = new key[10];String key[num] = props.getProperty("key"+num); 你可以使用ResourceBundle.详细可参照jdk的APIs文档比如:protected static Properties props = new Properties();bundle = ResourceBundle.getBundle(sPropFile); Enumeration enum = bundle.getKeys(); Object key = null; Object value = null;// System.out.println("GET PROPERTIES.... "); while( enum.hasMoreElements() ){ key = enum.nextElement(); value = bundle.getString(key.toString()); props.put(key, value);// System.out.println("["+key+"]=["+value+"]"); } 简单的properties文件只能实现类似hash表的数据结构,一个key对应一个value。所有的信息都要定义key(注释除外),然后通过key取。不然象你这样的,恐怕就要考虑用xml了,就变复杂了。 properties是没有section信息的。所以这一点就是你要处理的,比如可以这样:localhost.host=172.20.5.1loclahost.port=3336another.host=172.20.5.2anothre.port=2345...然后你取出properties中的所有key,它也是一个vector,把localhost等前缀信息取出即可。可参考如下代码: Vector res = new Vector(); Enumeration propNames = serversProps.propertyNames(); while (propNames.hasMoreElements()) { String name = (String) propNames.nextElement(); if(name.endsWith(".host")) { String connName = name.substring(0, name.lastIndexOf(".")); String connHost = serversProps.getProperty(connName + ".host"); if (connHost == null) { throw new Exception(connName+" have not host address."); } String port= serversProps.getProperty(connName+".port"); String userID = serversProps.getProperty(connName + ".user"); String passWord = serversProps.getProperty(connName + ".password"); String dataBase = serversProps.getProperty(connName +".database"); ServerTreeNode serverNode = new ServerTreeNode(connName); serverNode.setServerProperties(connHost,port,dataBase,userID,passWord); res.add(serverNode); }//end if name.endsWith".host" }//end while propNames.hasMoreElements return res; 复杂的配置文件用xml是好点,但是如果只有两层,用xml也没必要了,因为用xml来处理要带个xml的解析器(用jdk1.4例外)。而用properties则是jre自己支持的,速度也会快一些了。 properties 没有 [session] 信息的,如果你需要分类,只好用前缀的办法,如:你的#注释[segment1]key1=...key2=...[segmenti]keyi=...可改成#注释segment1.key1=...segment1.key2=...segmenti.keyi=... 把文件读入然后解析,那样很笨的方法,建议用property,xml freemarker简单语法问题但是没用过所以问问大家啊。55555 如何清除缓存 问题 在线等待 呀 气死人 BigDecimal 四舍五入的问题 大家来帮忙看看,为什么会报错呢? application不能使用null布局吗 请问用timer类写好的定时触发时间可以在程序中变化吗?就是说定时的时间可以又界面来控制。 (下载)MyEclipse下开发Struts和Hibernate的录像。。 谁能编出这个问题 滚动条问题? 如何防止JtextArea里的文字被用户选择并copy??? String用法释疑 关于JAVA连数据库的问题。
props.load( new java.io.FileInputStream("xxx.properties"));int num = 1;
String[] key = new key[10];String key[num] = props.getProperty("key"+num);
比如:
protected static Properties props = new Properties();
bundle = ResourceBundle.getBundle(sPropFile);
Enumeration enum = bundle.getKeys();
Object key = null;
Object value = null;
// System.out.println("GET PROPERTIES.... ");
while( enum.hasMoreElements() ){
key = enum.nextElement();
value = bundle.getString(key.toString());
props.put(key, value);
// System.out.println("["+key+"]=["+value+"]");
}
不然象你这样的,恐怕就要考虑用xml了,就变复杂了。
properties是没有section信息的。所以这一点就是你要处理的,比如可以这样:localhost.host=172.20.5.1
loclahost.port=3336
another.host=172.20.5.2
anothre.port=2345
...然后你取出properties中的所有key,它也是一个vector,把localhost等前缀信息取出即可。可参考如下代码: Vector res = new Vector(); Enumeration propNames = serversProps.propertyNames();
while (propNames.hasMoreElements()) {
String name = (String) propNames.nextElement();
if(name.endsWith(".host")) {
String connName = name.substring(0, name.lastIndexOf("."));
String connHost = serversProps.getProperty(connName + ".host");
if (connHost == null) {
throw new Exception(connName+" have not host address.");
}
String port= serversProps.getProperty(connName+".port"); String userID = serversProps.getProperty(connName + ".user");
String passWord = serversProps.getProperty(connName + ".password");
String dataBase = serversProps.getProperty(connName +".database"); ServerTreeNode serverNode = new ServerTreeNode(connName);
serverNode.setServerProperties(connHost,port,dataBase,userID,passWord); res.add(serverNode);
}//end if name.endsWith".host"
}//end while propNames.hasMoreElements
return res;
复杂的配置文件用xml是好点,但是如果只有两层,用xml也没必要了,因为用xml来处理要带个xml的解析器(用jdk1.4例外)。而用properties则是jre自己支持的,速度也会快一些了。
#注释
[segment1]
key1=...
key2=...[segmenti]
keyi=...可改成
#注释
segment1.key1=...
segment1.key2=...segmenti.keyi=...