`
futureeye
  • 浏览: 49959 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java properties文件的用法

阅读更多
各种语言都有自己所支持的配置文件类型。比如 Python ,他支持 .ini 文件。因为他内部有一个 ConfigParser 类来支持 .ini 文件的读写,根据该类提供的方法程序员可以自由的来操作 .ini 文件。而在 Java 中, Java 支持的是 .properties 文件的读写。 JDK 内置的 Java.util.Properties 类为我们操作 .properties 文件提供了便利。 
一. .properties 文件的形式

# 以下为服务器、数据库信息

dbPort = localhost
databaseName = mydb
dbUserName = root
dbPassword = root

# 以下为数据库表信息

dbTable = mytable

# 以下为服务器信息

ip = 192.168.0.9

在上面的文件中我们假设该文件名为: test.properties 文件。其中 # 开始的一行为注释信息;在等号“ = ”左边的我们称之为 key ;等号“ = ”右边的我们称之为 value 。(其实就是我们常说的键 - 值对) key 应该是我们程序中的变量。而 value 是我们根据实际情况配置的。

二. JDK 中的 Properties 类 Properties 类存在于胞 Java.util 中,该类继承自 Hashtable ,它提供了几个主要的方法:
1. getProperty ( String key) ,   用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。

2. load ( InputStream inStream) ,从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索,如果文件没有load 是不能够用getProperty 方法来搜索的。

3. setProperty ( String key, String value) ,调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。

4. store ( OutputStream out, String comments) ,   以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。

5. clear () ,清除所有装载的 键 - 值对。该方法在基类中提供。

有了以上几个方法我们就可以对 .properties 文件进行操作了!
三.代码实例

package configuration;

import Java.io.FileInputStream;
import Java.io.FileNotFoundException;
import Java.io.FileOutputStream;
import Java.io.IOException;
import Java.util.Properties;

/** *//**
* 读取properties文件
* @author Qutr
*
*/
public class Configuration
...{
    private Properties propertie;
    private FileInputStream inputFile;
    private FileOutputStream outputFile;
  
    /** *//**
     * 初始化Configuration类
     */
    public Configuration()
    ...{
        propertie = new Properties();
    }
  
    /** *//**
     * 初始化Configuration类
     * @param filePath 要读取的配置文件的路径+名称
     */
    public Configuration(String filePath)
    ...{
        propertie = new Properties();
        try ...{
            inputFile = new FileInputStream(filePath);
            propertie.load(inputFile);
            inputFile.close();
        } catch (FileNotFoundException ex) ...{
            System.out.println("读取属性文件--->失败!- 原因:文件路径错误或者文件不存在");
            ex.printStackTrace();
        } catch (IOException ex) ...{
            System.out.println("装载文件--->失败!");
            ex.printStackTrace();
        }
    }//end ReadConfigInfo(...)
  
    /** *//**
     * 重载函数,得到key的值
     * @param key 取得其值的键
     * @return key的值
     */
    public String getValue(String key)
    ...{
        if(propertie.containsKey(key))...{
            String value = propertie.getProperty(key);//得到某一属性的值
            return value;
        }
        else
            return "";
    }//end getValue(...)
  
    /** *//**
     * 重载函数,得到key的值
     * @param fileName properties文件的路径+文件名
     * @param key 取得其值的键
     * @return key的值
     */
    public String getValue(String fileName, String key)
    ...{
        try ...{
            String value = "";
            inputFile = new FileInputStream(fileName);
            propertie.load(inputFile);
            inputFile.close();
            if(propertie.containsKey(key))...{
                value = propertie.getProperty(key);
                return value;
            }else
                return value;
        } catch (FileNotFoundException e) ...{
            e.printStackTrace();
            return "";
        } catch (IOException e) ...{
            e.printStackTrace();
            return "";
        } catch (Exception ex) ...{
            ex.printStackTrace();
            return "";
        }
    }//end getValue(...)
  
    /** *//**
     * 清除properties文件中所有的key和其值
     */
    public void clear()
    ...{
        propertie.clear();
    }//end clear();
  
    /** *//**
     * 改变或添加一个key的值,当key存在于properties文件中时该key的值被value所代替,
     * 当key不存在时,该key的值是value
     * @param key 要存入的键
     * @param value 要存入的值
     */
    public void setValue(String key, String value)
    ...{
        propertie.setProperty(key, value);
    }//end setValue(...)
  
    /** *//**
     * 将更改后的文件数据存入指定的文件中,该文件可以事先不存在。
     * @param fileName 文件路径+文件名称
     * @param description 对该文件的描述
     */
    public void saveFile(String fileName, String description)
    ...{
        try ...{
            outputFile = new FileOutputStream(fileName);
            propertie.store(outputFile, description);
            outputFile.close();
        } catch (FileNotFoundException e) ...{
            e.printStackTrace();
        } catch (IOException ioe)...{
            ioe.printStackTrace();
        }
    }//end saveFile(...)
  
    public static void main(String[] args)
    ...{
        Configuration rc = new Configuration(".\config\test.properties");//相对路径
      
        String ip = rc.getValue("ipp");//以下读取properties文件的值
        String host = rc.getValue("host");
        String tab = rc.getValue("tab");
      
        System.out.println("ip = " + ip + "ip-test leng = " + "ip-test".length());//以下输出properties读出的值
        System.out.println("ip's length = " + ip.length());
        System.out.println("host = " + host);
        System.out.println("tab = " + tab);

        Configuration cf = new Configuration();
        String ipp = cf.getValue(".\config\test.properties", "ip");
        System.out.println("ipp = " + ipp);
//        cf.clear();
        cf.setValue("min", "999");
        cf.setValue("max", "1000");
        cf.saveFile(".\config\save.perperties", "test");
      
//        Configuration saveCf = new Configuration();
//        saveCf.setValue("min", "10");
//        saveCf.setValue("max", "1000");
//        saveCf.saveFile(".\config\save.perperties");
      
    }//end main()
  
}//end class ReadConfigInfo

四.小结 通过上面的例子不难看出,在Java中操作配置文件是非常简单的。在一个需要用到大量配置信息的模块或系统里,我们有必要封装一个专门的类来共使用。通过最后的main函数调用,相信大家可以看出该类的用法。不足指出希望大家多多指点。

Java properties文件的操作

----------------------------------------------------
       Java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便。下面是一个操作Java properties文件的例子,给出了操作方法和properties文件。从中可以看到如何读取properties文件,并应用读取出来的值,是学习操作properties文件的好例子。

一、properties文件

IcisReport.properties
------------------------------------------------------
#################################
#   工商报表应用IcisReport的配置文件       #
#   作者:雷智民                                              #
#   日期:2006年11月21日                           #
#################################
#
#   说明:业务系统TopIcis和报表系统IcisReport是分离的
#   可分开部署到不同的服务器上,也可以部署到同一个服务
#   器上;IcisReprot作为独立的web应用程序可以使用任何
#   的Servlet容器或者J2EE服务器部署并单独运行,也可以
#   通过业务系统的接口调用作为业务系统的一个库来应用.
#
#   IcisReport的ip
IcisReport.server.ip=192.168.3.143
#   IcisReport的端口
IcisReport.server.port=8080
#   IcisReport的上下文路径
IcisReport.contextPath=/IcisReport

------------------------------------------------------

二、操作properties文件的Java方法

下面是一个操作properties文件的方法

    /** *//**
     * @return 获取IcisReport报表应用的URL
     */
    private String getIcisReportURL() ...{
        String icisReportURL = ""; // IcisReport报表应用的URL
        String icisReportServerIP = ""; // IcisReport服务器的IP
        String icisReportServerPort = ""; // IcisReport服务器的服务端口
        String icisReportContextPath = ""; // IcisReport应用的ContextPath

        Properties prop = new Properties();
        InputStream in;
        try ...{
            in = getClass().getResourceAsStream("/IcisReport.properties");
            prop.load(in);
            Set keyValue = prop.keySet();
            for (Iterator it = keyValue.iterator(); it.hasNext();) ...{
                String key = (String) it.next();
                if (key.equals("IcisReport.server.ip")) ...{
                    icisReportServerIP = (String) prop.get(key);
                } else if (key.equals("IcisReport.server.port")) ...{
                    icisReportServerPort = (String) prop.get(key);
                } else if (key.equals("IcisReport.contextPath")) ...{
                    icisReportContextPath = (String) prop.get(key);
                }
            }
        } catch (Exception e) ...{
            log.error("IO读取出错,找不到IcisReport.properties!");
        }

        if (icisReportServerIP.trim().equals("")) ...{
            log
                    .error("请检查配置文件IcisReport.properties中的IcisReport.server.ip项的值是否正确!");
        }
        if (icisReportServerPort.trim().equals("")) ...{
            log
                    .error("请检查配置文件IcisReport.properties中的IcisReport.server.port项的值是否正确!");
        }
        if (icisReportServerPort.trim().equals("")) ...{
            log
                    .error("请检查配置文件IcisReport.properties中的IcisReport.server.port项的值是否正确!");
        }

        icisReportURL = "http://" + icisReportServerIP.trim() + ":"
                + icisReportServerPort.trim() + icisReportContextPath.trim();
        log.info("获取的icisReportURL=" + icisReportURL);
        return icisReportURL;
    }
总结:Java的properties文件需要放到classpath下面,这样程序才能读取到,有关classpath实际上就是Java类或者库的存放路径,在Java工程中,properties放到class文件一块。在web应用中,最简单的方法是放到web应用的WEB- INF\classes目录下即可,也可以放在其他文件夹下面,这时候需要在设置classpath环境变量的时候,将这个文件夹路径加到 classpath变量中,这样也也可以读取到。在此,你需要对classpath有个深刻理解,classpath绝非系统中刻意设定的那个系统环境变量,WEB-INF\classes其实也是,Java工程的class文件目录也是。
分享到:
评论

相关推荐

    java properties文件中文转化

    当我们在properties文件中直接使用中文时,Java在读取时可能会出现乱码。为了解决这个问题,我们可以使用两种策略: 1. 文件编码转换:在写入properties文件时,使用支持中文的编码,如UTF-8。在读取时,需要指定...

    java 改变Properties文件中的键值

    总结来说,Java中修改Properties文件的键值涉及到使用`Properties`类的`load()`, `setProperty()`, 和 `store()`方法。在实际应用中,需要考虑异常处理和资源管理,以确保程序的稳定性和效率。通过封装这些操作到...

    JAVA 解决Properties文件保存中文乱码

    首先,我们需要理解Java默认使用ISO-8859-1编码来处理Properties文件。由于此编码不支持大部分中文字符,因此在保存或加载包含中文的Properties文件时,必须指定正确的字符编码,通常是UTF-8。 ### 1. 保存中文到...

    java 读取properties文件代码

    1. **加载Properties文件**:你可以使用`java.util.Properties`类来加载文件。首先,创建一个Properties对象,然后调用`load()`方法加载文件。这通常在类的初始化或静态块中完成。 ```java Properties prop = new ...

    java Properties文件key,value读取

    Java Properties文件是Java编程语言中用于存储配置信息的文本文件,通常以.key=value的形式存储键值对。这种文件格式在Java应用中广泛用于保存应用程序的配置参数、国际化字符串或者数据库连接信息等。读取...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以.key=value的形式存在。在实际开发中,我们经常需要读取和写入这些文件来管理应用的配置。然而,有时可能会遇到一些常见问题,比如系统找不到指定...

    java修改Properties文件,让输出格式与输入格式保持不变

    使用这个自定义的`SafeProperties`类,你可以确保在读取和写入Properties文件时,文件的格式不会被改变。这在需要保持原始格式的情况下特别有用,比如配置文件需要保持可读性,或者需要遵循特定的编码规范。 总结来...

    java实现properties文件读取

    本篇将深入探讨如何使用Java来实现Properties文件的读取。 首先,我们需要了解Properties类在Java中的作用。`java.util.Properties`是Java提供的一个类,它继承了`Hashtable`,主要用于处理属性列表(键/值对)。...

    用JAVA轻松操作properties文件

    ### 使用Java轻松操作properties文件 #### 一、概述 在Java开发中,`properties`文件是一种常见的配置文件格式,主要用于存储一系列的键值对。它通常用于保存应用程序的各种配置信息,如数据库连接字符串、服务器...

    java读写properties配置文件

    本文将详细介绍如何使用Java来读取和写入`Properties`配置文件。 #### 二、Properties类简介 `Properties`类是`java.util`包下的一个类,它专门用来处理文本配置文件。这类文件通常遵循“键=值”的格式,例如: `...

    利用Java的Properties 类读取配置文件信息

    通过以上步骤,你可以使用Java的`Properties`类高效地读取、修改和保存配置文件,为你的应用程序提供灵活的配置管理。在实际项目中,你可能会将其封装到一个单独的类,如示例代码中的`PropertiesReader`,以提供更...

    java对properties配置文件的读和写

    在Java编程中,`properties`文件是用于存储应用程序配置信息的一种简单文本格式。这些文件通常包含键值对,其中键和值之间用等号或冒号分隔。本篇文章将详细探讨如何在Java中读取、写入、修改以及删除`properties`...

    Properties 文件比较工具

    Properties文件在Java编程中起着至关重要的作用,它们通常用于存储配置信息,如数据库连接字符串、应用程序设置等。本项目提供了一个专门的“Properties文件比较工具”,它采用Java语言编写,能够帮助开发者快速检查...

    Java读取properties文件的三种方式

    总结,Java中读取properties文件的方法包括使用Properties类加载文件、通过ClassLoader获取类路径下的文件以及利用try-with-resources语句进行资源管理。根据具体的应用场景,选择合适的方法可以更高效地处理配置...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    1. 相对类路径:如果你的Properties文件与Java源代码位于同一目录结构下,可以使用`getResourceAsStream()`方法,配合类路径来加载。例如: ```java InputStream in = getClass().getResourceAsStream("/config....

    (转)java读取properties文件

    在这个例子中,`SysPropertiesUtil`类使用了静态初始化块来加载`config.properties`文件,并提供了一个静态方法`getPropValue()`,允许其他类通过键获取属性值。 总之,Java中的`properties`文件是管理配置信息的...

    读取properties文件返回map

    1. **properties文件结构** `properties`文件的结构非常简单,每行代表一个键值对,键和值之间用等号`=`或冒号`:`分隔。例如: ``` username=admin password=123456 database.url=jdbc:mysql://localhost:3306/...

    Java读取含中文key的properties文件

    以下将详细介绍如何在Java中读取含中文key的Properties文件,并利用反射调用相关方法。 首先,我们需要理解Java的Properties类。`java.util.Properties`是Java标准库中的一个类,它提供了一种加载和保存属性列表的...

    Java读取Properties文件的六种方法

    ### Java读取Properties文件的六种方法 在Java开发中,`Properties` 文件常用于存储配置信息,如数据库连接字符串、应用配置等。正确且高效地读取这些配置文件对于程序运行至关重要。本文将详细介绍六种不同的方法...

    能保存Properties文件注释的Properties工具类

    5. 自定义的`store()`方法:根据内部存储的信息,重建并写出完整的Properties文件。 使用`CommentedProperties`,开发者可以在处理配置文件时保持其原有的注释,这对于理解和维护代码非常有帮助。此外,此类还可以...

Global site tag (gtag.js) - Google Analytics