`

java.util.Properties类 学习笔记

    博客分类:
  • java
 
阅读更多

转自http://trans.blog.51cto.com/503170/110227/

java.util.Properties类 学习笔记
 
学习目标:
 
1、认识properties文件,理解其含义,会正确创建properties文件。
2、会使用java.util.Properties类来操作properties文件。
3、掌握相对路径,能正确书写一个properties文件的相对路径。
 
一、认识properties文件
 
1、properties文件是一个文本文件
2、properties文件的语法有两种,一种是注释,一种属性配置。
 注    释:前面加上#号
 属性配置:以“键=值”的方式书写一个属性的配置信息。
3、properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“\”表示。
4、properties的属性配置键值前后的空格在解析时候会被忽略。
5、properties文件可以只有键而没有值。也可以仅有键和等号而没有值,但无论如何一个属性配置不能没有键。
 
 
例如,下面一个properties文件:
#正确的properties配置文件
aaa=1\
    11
b
bb    =     222
 
#格式良好的properties文件
aaa=111
bbb=222
 
二、解读java.util.Properties类
 
1、Properties类的层次结构
java.lang.Object
  java.util.Dictionary<K,V>
      java.util.Hashtable<Object,Object>
          java.util.Properties
 
从层次机构看,Properties类实现了Map接口,因为HashTable实现了Map接口,因此Properties类本质上是一种简单的Map容器。
实际上,Properties类本身表示了对一种Map结构的操作。properties文件本身就表示了一个“键值对”的集合。因 此,Properties类属于集合容器的家族,在使用前应该创建一个Properties的容器,实际上就是创建一个默认不带参数的 Properties对象。以后通过别的方式给里面添加“键值对”。
 
2、properties文件与Properties类的关系
通过properties文件可以填充Properties类。
也可以通过xml文件来填充Properties类。
可以通过绝对路径方式加载Properties文件信息,也可以使用相对路径加载。
 
三、实践
 
1、以绝对相对路径方式加载properties文件信息。
2、将Properties对象持久化到一个properties文件或者一个xml文件中。
3、修改并持久化properties文件。
 
测试代码:
 
测试的properties文件:
#格式良好的properties文件
aaa=111
bbb=222
 
测试类:
package stu;

import java.io.*;
import java.util.Properties;

/**
* Properties类测试
* User: xiaohui
* Date: 2008-11-4 21:04:54
*/

public class TestProperties {
        public static void main(String args[]) throws IOException {
                testProperties();
                test1();
        }

        public static void testProperties() throws IOException {
                System.out.println("------------testProperties-------------" );
                //将properties文件加载到输入字节流中
                InputStream is = new FileInputStream("D:\\myprojects\\lession4\\src\\stu\\ttt.properties" );
                //创建一个Properties容器
                Properties prop = new Properties();
                //从流中加载properties文件信息
                prop.load(is);
                //循环输出配置信息
                for (Object key : prop.keySet()) {
                        System.out.println(key + "=" + prop.get(key));
                }

                //定义一个输出流
                OutputStream os1 = new FileOutputStream("C:\\ttt.xml" );
                OutputStream os2 = new FileOutputStream("C:\\ttt.properties" );

                //从Properties对象导出导出到xml
                prop.storeToXML(os1, "我从properties导出的XML配置文件" );
                //从Properties对象导出properties文件
                prop.store(os2, "我从properties导出的XML配置文件" );

                is.close();
                os1.close();
                os2.close();

                //从xml加载配置信息,填充Properties容器
                prop.loadFromXML(new FileInputStream("C:\\ttt.xml" ));
                //循环输出配置信息
                System.out.println("我从导出的xml加载配置文件信息!" );
                for (Object key : prop.keySet()) {
                        System.out.println(key + "=" + prop.get(key));
                }

                //修改Properties对象,并持久化到一个文件
                prop.put("呵呵呵" , "嘎嘎嘎" );
                OutputStream os3 = new FileOutputStream("C:\\ttt1.xml" );
                prop.storeToXML(os3, "我从properties导出的XML配置文件" );
                os3.close();
        }

        /**
         * 以相对路径方式加载properties文件
         *
         * @throws IOException
         */

        public static void test1() throws IOException {
                System.out.println("------------test1-------------" );
                Properties p = new Properties();
                p.load(TestProperties.class .getResourceAsStream("/stu/ttt.properties" ));
                for (Object key : p.keySet()) {
                        System.out.println(key + "=" + p.get(key));
                }
        }
}
 
 
运行结果:
------------testProperties-------------
bbb=222
aaa=111
我从导出的xml加载配置文件信息!
bbb=222
aaa=111
------------test1-------------
bbb=222
aaa=111

Process finished with exit code 0
 
C:盘下写入的文件如下:
 
 
 
 
呵呵,全部达到预期目标。
分享到:
评论

相关推荐

    SCJP学习笔记.doc

    以下是从给定的学习笔记中提炼出的一些关键知识点: 1. **java.util.Properties的使用** `Properties` 类是Java中用于处理配置文件的关键工具,它继承自`Hashtable`。在示例中,`Properties` 对象`pp`加载了名为...

    JAVA编写的日历记事本 实现日历及记事本功能

    Java的JDBC(Java Database Connectivity)API可用于与数据库交互,而`java.util.Properties`类则可以方便地处理配置文件和简单的键值对存储。 6. **异常处理**:良好的错误处理是任何软件的关键部分。Java的异常...

    java私塾学习笔记整理

    ### Java私塾学习笔记整理 #### 第一章:Java入门 **一、Java是什么?** Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年推出。它旨在为跨平台开发提供一种通用的语言环境,使开发者能够在任何...

    struts2学习笔记十六(第16讲.Struts2的国际化)

    Struts2框架虽然没有直接提供时区的国际化支持,但我们可以利用Java的`java.util.Locale`和`java.util.TimeZone`类来处理这个问题。 对于工具的使用,IDE如IntelliJ IDEA和Eclipse都提供了便捷的方式来管理资源文件...

    java经验总结资料

    #### Properties 类学习笔记 `java.util.Properties` 类是 Java 中用于处理配置文件的关键类之一。它提供了存储与检索键值对的功能,并且这些键值对可以被保存到磁盘上的文件中或者从文件中加载出来。在实际应用中...

    Java学习笔记-个人整理的

    {13.8}java.util.Date与java.sql.Date比较}{200}{section.13.8} {13.9}Meta Data}{201}{section.13.9} {13.10}可滚动结果集}{201}{section.13.10} {13.11}Procedure}{201}{section.13.11} {14}xml}{204}{...

    资料-Java日志.zip

    本资料"Java日志.zip"包含的资源旨在帮助开发者理解和应用Java日志机制,其中可能涵盖了日志框架的介绍、示例代码以及相关的学习笔记。 1. **日志框架** Java平台上有多种日志框架,如Java内置的日志API(java....

    struts2学习笔记十七(第17讲.Struts2的国际化续)

    通过`java.text.SimpleDateFormat`和`java.util.NumberFormat`,可以根据Locale来格式化日期和数字。 8. **优化和最佳实践**: - 分离业务逻辑和国际化文本,避免在Action类中硬编码文本。 - 使用`ResourceBundle...

    java 日历记事本

    你可以通过它学习到如何使用Java的`java.util.Calendar`类以及可能的第三方库(如JCalendar)来创建日历视图,同时了解如何处理用户输入,存储和检索数据,以及如何组织和管理项目结构。此外,你还能接触到软件工程...

    JAVA语言编写的smtp程序

    import java.util.Properties; ``` 然后,配置SMTP服务器的属性,包括主机名、端口号、用户名和密码: ```java Properties props = new Properties(); props.put("mail.smtp.host", "your-smtp-host"); props.put...

    Hibernate学习笔记

    - 日期和时间:`java.util.Date`或`java.sql.Date`,以及`timestamp`等。 - 数值类型:`BigDecimal`和`BigInteger`。 - 大对象:`Clob`和`Blob`。 至于主键管理策略,Hibernate提供了多种方式,如: - `increment`...

    Spring学习笔记

    ### Spring学习笔记核心知识点解析 #### 一、消息资源配置(`Messagesource`) 在Spring框架中,`Messagesource`接口被用来支持国际化(i18n),它提供了一种方式来根据不同的区域设置(locale)加载不同的资源...

    Griffon学习笔记2 - 显示数据列表

    **Griffon学习笔记2 - 显示数据列表** Griffon是一款基于Groovy和Java的桌面应用程序框架,它提供了一种简洁的方式来构建GUI应用,同时利用了Java平台的广泛库支持。这篇学习笔记主要关注如何在Griffon应用中展示...

    eclipse学习笔记

    【Eclipse学习笔记】 Eclipse是一款强大的开源集成开发环境(IDE),最初由IBM开发,现已成为全球开发者广泛使用的工具。Eclipse的主要特点是其模块化设计,通过安装各种插件,可以扩展其功能以适应多种编程语言和...

    Note.zip_Windows编程_Java_

    4. **数据持久化**:如果记事本支持多文档或者保存用户设置,可能使用了`java.util.Properties`来存储配置信息,或者直接将文本内容写入磁盘文件以实现数据的持久化。 5. **异常处理**:良好的错误处理是任何程序的...

    log4j学习

    Commons Logging的核心价值在于它的灵活性和可插拔性,通过简单的配置切换,应用可以轻松地在不同的日志实现之间进行转换,如Log4j、Java Util Logging等,而无需修改任何源代码。 #### Log4j:强大的日志实现 Log...

Global site tag (gtag.js) - Google Analytics