java.util.Properties类

Properties类很常用么,几乎每个项目,从j2se到j2ee每个项目都没离开过他,就算是jsp+servlet+jdbc的东西,jdbc的配置信息也是写Properties,国际化也是Properties,cdn也是Properties,memcached也是 Properties。总之java.utils.*无所不用,不所不在。。

小记下Properties:

java.util.Properties是对properties这类配置文件的映射。支持key-value类型和xml类型两种。

key-value类型的配置文件大略长这样:

#符号为注释行,Properties会忽略注释。允许只有key没有value
Dbtools.className=com.mysql.jdbc.Driver
Dbtools.password=root
Dbtools.url=jdbc\:mysql\://localhost\:3306/choseclass
Dbtools.user=root

如上所示的配置文件就可以通过Properties文件读取。

package dao;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * Title:Messages
 * Description:读取messages.properties资源文件
 * @author Dr_chen
 * @date 2015年7月19日 下午4:32:11
 *
 */
public class Messages {
    public static Properties properties=new Properties();
    static{
        InputStream is=Messages.class.getClassLoader().getResourceAsStream("dao/messages.properties");
        try {
            properties.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(null!=is){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                is=null;
            }
        }
    }
    public static String getProperty(String key){
        return properties.getProperty(key);
    }

}

此外,半夜乱弹琴在博客方便好使的java.util.Properties类中对Properties类有很详细的说明,在此我加以应用,感谢半夜乱弹琴同学!!!

#测试环境配置:平台路径配置

jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/

dbPort = localhost

databaseName = myd

dbUserName = root

#打头的是注释行,Properties会忽略注释。允许只有key没有value。

例如这样:

#测试环境配置:平台路径配置

jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/

dbPort =
databaseName

这种情况下,value会被set成null。

properties类实现了Map接口,所以很明显,他是用map来存储key-value数据,所以也注定存入数据是无序的,这个点需要注意。只能通过key的方式来get对应value。

针对key-value这种配置文件,是用load方法就能直接映射成map,非常简单好用。这种配置文件也是我们最重要碰到的配置文件,利用properties读取这类文件到内存一行代码就欧科,比自己解析强大多了,这点很赞。

读取配置文件的大略代码如下:


 1 public class LoadSample {
 2     public static void main(String args[]) throws Exception {
 3       Properties prop = new Properties();
 4       FileInputStream fis =
 5         new FileInputStream("sample.properties");
 6       prop.load(fis);
 7       prop.list(System.out);
 8       System.out.println("\nThe foo property: " +
 9           prop.getProperty("foo"));
10     }
11 }  
 

第六行的load方法直接生产一个内存map,第九行就能get到对应的value了,简单快捷。

这里的第七行list方法是一个输出方法,这边是输出到console,也可以输出到文件等,就能实现内存写入配置文件了。

比如这样:

//通过list 方法将Properties写入Properties文件
import java.io.IOException;
import java.io.File;
import java.io.FileInputStream;
import java.io.PrintStream;
import java.util.Properties;

public class Test {
    public static void main(String[] args) {

        Properties p = new Properties();
        p.setProperty("id","dean");
        p.setProperty("password","123456");

        try{
            PrintStream fW = new PrintStream(new File("e:\\test1.properties"));
           p.list(fW );     } catch (IOException e) {
          e.printStackTrace();

        }
    }
}

这样就能把内存中的properties对象写入到文件中了。

另外一种配置形式是xml形式的,这种配置相对上面一种就少见一点。

xml形式的配置文件格式大略是这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Hi</comment>
<entry key="foo">bar</entry>
<entry key="fu">baz</entry>
</properties>

读取xml配置跟读取kv配置没差别,就是把load换成xml对应的loadFromXML方法,代码大略是这样:

public class LoadSampleXML {
    public static void main(String args[]) throws Exception {
      Properties prop = new Properties();
      FileInputStream fis =
        new FileInputStream("sampleprops.xml");
      prop.loadFromXML(fis);
      prop.list(System.out);
      System.out.println("\nThe foo property: " +
          prop.getProperty("foo"));
    }
}

把内存中的properties对象写入到xml文件中也和上面差不多,就是把list方法改成xml对应的storeToXML方法。

代码大略是这样:

import java.io.IOException;
import java.io.File;
import java.io.FileInputStream;
import java.io.PrintStream;
import java.util.Properties;

public class Test {
    public static void main(String[] args) {
        Properties p = new Properties();
        p.setProperty("id","dean");
        p.setProperty("password","123456");

        try{
            PrintStream fW = new PrintStream(new File("e:\\test1.xml"));
            p.storeToXML(fW,"test");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-10-11 22:55:38

java.util.Properties类的相关文章

java.util.Properties类 学习笔记

学习目标: 1.认识properties文件,理解其含义,会正确创建properties文件. 2.会使用java.util.Properties类来操作properties文件. 3.掌握相对路径,能正确书写一个properties文件的相对路径. 一.认识properties文件 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注    释:前面加上#号 属性配置:以“键=值”的方式书写一个属性的配置信息. 3.propert

使用java.util.Properties快速导入配置文件

1.java.util.Properties类继承关系 Properties类表示一组持久属性.属性可以被保存到流或从流中加载.属性列表中的每一个键及其相应的值是一个字符串. 继承关系: java.lang.Object java.util.Dictionary<K,V> java.util.Hashtable<Object,Object> java.util.Properties public class Properties extends Hashtable<Objec

java.util.properties

http://gimgen1026.iteye.com/blog/152023 Properties 类已不是新东西了,它在 Java 编程的早期就有了,并且几乎没有什么变化.J2SE 的 Tiger 版本增强了这个类,不仅可以用它在单独一行中指定用等号分隔的多个键-值对,还可以用XML 文件装载和保存这些键-值对.在 驯服 Tiger的这一期文章中,John Zukowski 展示了如何驾驭这匹新一代的“役马”. J2SE 1.5 以前的版本要求直接使用 XML 解析器来装载配置文件并存储设置

java.util.Properties工具类

import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Properties;

Java中Properties类的操作

Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,就是像读取数据库账号密码一样,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是"键=值"的格式,文本注释信息可以用"#"来注释. Properties类继承自Hashtable,如下: 它提供了几个主要的方法: 1. getProperty ( String key),用指定的键在此属性列表中搜索属性.也就是通过参数

Java中Properties类

Java中Properties类简介 知识学而不用,就等于没用,到真正用到的时候还得重新再学. Properties类继承自Hashtable,如下: 它主要用于读取Java的配置文件,由于配置文件中的很多变量时经常改变的,通过这个类可以让用户脱离程序本身去修改相关的变量配置.在Java中,其配置文件常为.properties文件,格式为文本文件,内容的格式为“键=值”的格式,#打头的是注释行,Properties会忽略注释.允许只有key没有value,没有value时,value会被set成

工作积累(二)——使用java.util.ResourceBundle和java.util.Properties实现常量功能

在 Java 中我们往往通过定义常量来使用一些值,方便我们进行修改配置,如: public classConstant {   public static final String IMG_ORI_PATH = "ori/";   public static final String IMG_THUMB_PATH = "thumb/";   -- } 这样我们在其他类中可以直接使用 Constant.IMG_ORI_PATH 来代替 "ori/"

java.util Properties使用记录

转:http://www.2cto.com/px/201006/47834.html 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Properties的构造函数有两个,一个不带参数,一个使用一个Properties对象作为参数. 使用Properties读取.properties文件 test.properties文件如下: #测试环境配置:平台路径配置 jstrd_home=D:/TMS200

有序的方式读写Properties文件 —— 对java.util.Properties的改写

目的 前几天,要做一个JSP读写Properties的模块,意在让用户能在web界面编辑系统配置.我很自然的用了java的Porperties工具类,读出写入不知多方便,但是用户说修改一个保存之后下次来就找不到自己的东西了(顺序乱了).于是需要做一个有序的Properties文件读写类.果断上stackoverflow,找了两个例子(链接不记得了),两种方式,抄下来. 方式一,LinkedProperties package com.example.common; import java.io.