当前位置:  技术问答>java相关

关于读取配置文件的问题

    来源: 互联网  发布时间:2015-04-25

    本文导语:  配置文件格式如下: #注释 [segment1] key1=... key2=... [segmenti] keyi=... 现在要编写一个类,把配置文件中的参数存入vector中,请问该如何实现。 是不是要用到StreamTokenizer,请给出代码,谢谢! | properties是...

配置文件格式如下:

#注释
[segment1]
key1=...
key2=...

[segmenti]
keyi=...


现在要编写一个类,把配置文件中的参数存入vector中,请问该如何实现。
是不是要用到StreamTokenizer,请给出代码,谢谢!

|

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;


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

|
为什么不用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了,就变复杂了。

|
好像XML更好的

|

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

|
properties 没有 [session] 信息的,如果你需要分类,只好用前缀的办法,如:

你的
#注释
[segment1]
key1=...
key2=...

[segmenti]
keyi=...

可改成
#注释
segment1.key1=...
segment1.key2=...

segmenti.keyi=...

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

    
 
 

您可能感兴趣的文章:

  • 如何重新读取配置文件
  • 读取应用程序配置的类库 EasyConf
  • 请问下大家关于读取配置文件的问题
  • 读取spring配置文件的方法(spring读取资源文件)
  • IIS7无法读取配置文件解决办法
  • C# 读取配置文件(指定路径)的方法
  • shell编程,如何读取配置文件
  • Linux服务程序的权限问题,读取不了配置文件~!!!!!!
  • shell脚本读取配置文件
  • C# 读取指定路径配置文件的方法
  • Android 读取Properties配置文件的小例子
  • java中读取配置文件中数据的具体方法
  • libconfig格式的配置文件怎么读取?
  • 请教linux(C语言)下标准ini文件的读取,写入?配置管理
  • C#中读取App.config配置文件代码实例
  • 各位,怎样读取XML格式的配置文件,请给出源代码。急需!!!
  • C#读取XML配置文件的例子
  • 用C实现添加和读取配置文件函数
  • Shell脚本读取ini配置文件的实现代码2例
  • C++读取INI配置文件类实例详解
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 上传文件时,如何在读取文件内容之前中断读取,并返回客户端错误信息?
  • read函数读取文件时如何一行一行的读取,请指教!
  • java中读取.txt和读取.ini文件的方式和命令是否一样
  • 请问在Java程序中能否直接读取ini文件,如何读取?
  • php读取文件内容并清空文件
  • python读取浮点数和读取文本文件示例
  • 高手帮忙:如何用java读取数据(从ftp服务器上一个文本文件)但不采用get的方式直接读取,打印数据内容(web方式)
  • c语言读取csv文件和c++读取csv文件示例分享
  • 能否读取一个二进制文件的大小
  • 一个读取文件内容时遇到的问题,就是只读取了文件第一行的内容。。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 getline():读取一行字符
  • linux 下使用 FREETDS 访问数据库 image 字段的问题, 仅能读取 64K ,超出部分读取不到?
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 光驱中有一张光盘,成功读取,现在想换另一张光盘并读取,该如何做
  • C++ I/O 成员 ignore():读取字符并忽略指定字符
  • 串口读取数据的问题
  • C++ I/O 成员 read():读取字条符
  • linux下的mib读取问题?大虾帮解答下
  • C++ I/O 成员 gcount():返回读取的最后一次输入的字符数
  • 请问readdir读取顺序是什么
  • C++ I/O 成员 get():读取字符
  • CSV格式读取表格插件 csv2table
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 怎样读取ODBC中的数据源信息
  • 怎样读取指定内存地址处指定长度的内存数据???(
  • 预读取技术是什么啊?用用户CPU时间有关吗??
  • Linux下怎么样读取非标准输入设备键盘的值?
  • qt编程问题:读取中文文档!
  • 读取U盘内容
  • ISO7816 智能卡读取工具 Cardpeek
  • Jquery 读取URL参数的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3