`

文本配置文件和属性文件(Properties)读取类

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

相关推荐

    Java_Properties_类读取配置文件信息

    【Java_Properties_类读取配置文件信息】 在软件开发中,配置文件是必不可少的,因为它们允许我们灵活地管理程序中的可变参数,而无需修改源代码。Java 支持使用 `.properties` 文件作为其标准配置文件格式,这得益...

    SpringBoot第 5 讲:SpringBoot+properties配置文件读取

    `properties`文件是Java开发中常见的配置文件格式,它允许开发者将应用程序的配置参数存储在一个独立的文本文件中,便于管理和维护。在SpringBoot框架中,`properties`文件的读取和管理变得更加简便,这得益于...

    js读取properties文件

    .properties文件是Java中的配置文件,它以键值对的形式存储数据,如`key=value`。这些文件主要用于存储应用的配置信息,易于读写,并且支持国际化和本地化。 2. **浏览器限制** JavaScript在浏览器环境中默认没有...

    使用Properties类来读取配置文件

    这个类继承了`Dictionary`类,并提供了`load()`和`store()`等方法来读取和写入配置文件。 **基本用法** 首先,创建一个配置文件,例如`config.properties`,内容如下: ``` database.url=jdbc:mysql://localhost:...

    java读取配置文件

    最基础的方式是使用Java的I/O流来读取文本配置文件(通常是.properties格式)。例如,`java.io.FileInputStream`可以用来打开文件,然后`java.util.Properties`类可以加载并解析配置文件。以下是一个简单的示例: ...

    java类读取配置文件信息

    通过`Properties`类,我们可以读取配置文件信息,并将其存储在Java类中的变量中。 在读取配置文件信息时,需要注意以下几点: 1. 配置文件的路径:配置文件的路径需要正确,否则将无法读取配置文件信息。通常情况...

    java读写properties配置文件

    `Properties`类是`java.util`包下的一个类,它专门用来处理文本配置文件。这类文件通常遵循“键=值”的格式,例如: ``` # info.properties url=http://example.com name=John Doe ``` #### 三、读取Properties...

    java读取配置文件xml ,properties,txt

    我们可以使用`java.util.Properties`类来读取和写入此类文件。`ExecutePropertiesUtil.java`文件可能展示了如何使用Properties类的示例代码: ```java import java.io.FileInputStream; import java.io....

    读取配置文件代码

    以下是一个使用`Properties`类读取.properties配置文件的基本步骤: 1. 首先,导入所需的库: ```java import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; ``` 2. 创建一...

    java 读取配置文件

    要读取这样的配置文件,我们可以使用Java的`java.util.Properties`类。以下是如何使用该类的步骤: 1. 加载配置文件:首先,我们需要创建一个`Properties`对象,然后加载配置文件。这可以通过`InputStream`完成,...

    Java中XML配置文件的读取(sax).doc

    ParseXML类是XML配置文件的读取器,该类使用SAXParser解析XML文件并将配置信息存放在Properties对象中。 ParseXML类中,我们首先创建了一个SAXParserFactory对象,并使用该对象创建了一个SAXParser对象。然后,我们...

    java实现properties文件读取

    在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以键值对的形式存在。这些文件在程序运行时可以被加载并解析,以便应用根据配置内容进行动态行为调整。本篇将深入探讨如何使用Java来实现Properties...

    Properties读取资源文件经典应用

    在Java编程中,Properties类是用于处理属性列表的,这些属性列表可以是包含键值对的文本文件,或者是在程序的类路径(classpath)中作为资源文件存在。本篇文章将详细探讨如何使用Properties类来读取资源文件,以及...

    保存配置文件和读取配置文件

    在IT行业中,保存和读取配置文件是软件开发中的一项基本任务。配置文件通常用于存储应用程序的设置、选项以及变量,使得程序可以根据用户的需求或环境条件进行个性化调整。这一过程对于提升用户体验和软件的可定制性...

    Android读取properties配置文件的实例详解

    Android读取properties配置文件的实例详解中还涉及到了一些其他知识点,例如Android的Context类、Java的Properties类、InputStream对象等。这些知识点对于Android开发者来说非常重要,可以帮助他们更好地理解...

    读取.properties文件

    使用`Properties`类可以方便地读取和操作这些文件,而现代IDE和版本控制系统则提供了强大的辅助功能,以提高开发效率和代码质量。在实际应用中,应考虑使用框架提供的高级特性,以实现更灵活和自动化的配置管理。

    java读取配置文件的实例代码

    总结来说,Java中读取配置文件是一个基本但至关重要的操作,使用`Class.getResourceAsStream`结合`Properties`类可以轻松完成。确保正确设置配置文件的路径,以及在使用完毕后关闭`InputStream`,以避免资源泄露。...

    Java读取含中文key的properties文件

    在Java编程中,Properties文件是用于存储配置信息的文本文件,通常包含键值对,其中键和值之间用等号(=)或冒号(:)分隔。当我们需要处理包含中文键的Properties文件时,可能会遇到编码问题,因为默认的ISO-8859-1...

    读取properties返回map并写入文件

    在Java编程中,处理配置文件通常是一个常见的任务,特别是.properties文件。这些文件用于存储应用程序的配置参数,便于管理和更改。本篇文章将详细讲解如何读取.properties文件,将其内容转化为Map对象,以及如何将...

Global site tag (gtag.js) - Google Analytics