StreamTokenizer
是将有分隔符的字符串分成一个一个的单个值
如:abc def ghi
分成:abc
     def
     ghi
如果每个key后的值是一个:如:key1=abc
考虑使用Property来解决问题。

解决方案 »

  1.   

    为什么不用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);
      

  2.   

    你可以使用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+"]");
            }
      

  3.   

    简单的properties文件只能实现类似hash表的数据结构,一个key对应一个value。所有的信息都要定义key(注释除外),然后通过key取。
    不然象你这样的,恐怕就要考虑用xml了,就变复杂了。
      

  4.   


    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;
      

  5.   


    复杂的配置文件用xml是好点,但是如果只有两层,用xml也没必要了,因为用xml来处理要带个xml的解析器(用jdk1.4例外)。而用properties则是jre自己支持的,速度也会快一些了。
      

  6.   

    properties 没有 [session] 信息的,如果你需要分类,只好用前缀的办法,如:你的
    #注释
    [segment1]
    key1=...
    key2=...[segmenti]
    keyi=...可改成
    #注释
    segment1.key1=...
    segment1.key2=...segmenti.keyi=...
      

  7.   

    把文件读入然后解析,那样很笨的方法,建议用property,xml