Java读写.properties配置文件详解

1. ".properties"配置文件介绍

Java.properties配置文件示例

后缀名为.properties是一种属性配置文件。
这种文件以key=value格式存储内容,Java中可以使用Properties类来读取这个文件
String value=p.getProperty(key);
就能得到对应的数据,一般这个文件作为一些参数的存储,代码就可以灵活一点。

用于适应多语言环境,随着系统的语言环境的变化,读取不同的属性文件,存放一组配置(类似win下.ini, 还要简单些, 因为没有section)

由于难以表达层次, 复杂点可以用xml做配置替换.properties文件.
通俗点讲就相当于定义一个变量,在这个文件里面定义这些变量的值,在程序里面可以调用这些变量,好处就是,如果程序中的参数值需要变动,直接来改这个.properties文件就可以了,不用在去修改源代码。

优点在于有利于你以后的代码重构,集中管理,维护方便。

2. Eclipse中怎么创建properties文件

通用【新建】快捷键:Ctrl + N


Eclipse中创建properties文件 - 第一步

Eclipse中创建properties文件 - 第二步

Eclipse中创建properties文件 - 第三步

写它,写它,写它,OMG!!!

3. Properties 类的特点

Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。
特点如下:

  1. 它的key键和value值都是字符串类型
  2. 它继承自线程安全的Hashtable,因此也是线程安全的;
  3. 用法与HashMap和Hashtable类似,不需要指定泛型
  4. 主要用于.properties配置文件的读写

常用方法:

String  getProperty(String key)
使用此属性列表中指定的键搜索属性。
String  getProperty(String key, String defaultValue)
使用此属性列表中指定的键搜索属性。
void    list(PrintStream out)
将此属性列表打印到指定的输出流。
void    list(PrintWriter out)
将此属性列表打印到指定的输出流。
void    load(InputStream inStream)
从输入字节流读取属性列表(键和元素对)。
void    load(Reader reader)
以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。
void    loadFromXML(InputStream in)
将指定输入流中的XML文档表示的所有属性加载到此属性表中。
Enumeration  propertyNames()
返回此属性列表中所有键的枚举,包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。
Object  setProperty(String key, String value)
调用 Hashtable方法 put 。
void    store(OutputStream out, String comments)
将此属性列表(键和元素对)写入此 Properties表中,以适合于使用 load(InputStream)方法加载到 Properties表中的格式输出流。
void    store(Writer writer, String comments)
将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式输出到输出字符流。
void    storeToXML(OutputStream os, String comment)
发出表示此表中包含的所有属性的XML文档。
void    storeToXML(OutputStream os, String comment, String encoding)
使用指定的编码发出表示此表中包含的所有属性的XML文档。
Set stringPropertyNames()
返回此属性列表中的一组键,其中键及其对应的值为字符串,包括默认属性列表中的不同键,
如果尚未从主属性列表中找到相同名称的键。

4. 读写.properties配置文件(非常简单)

(1) load(InputStream inStream)
这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象。如下面的代码:

Properties pro = new Properties();
FileInputStream in = new FileInputStream("a.properties");
pro.load(in);
in.close();

(2) store(OutputStream out, String comments)
这个方法将Properties类对象的属性列表保存到输出流中。如下面的代码:

FileOutputStream oFile = new FileOutputStream(file, "a.properties");
pro.store(oFile, "Comment");
oFile.close();

(3) getProperty / setProperty
这两个方法是分别是获取和设置属性信息。

示例代码:

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream; 
import java.util.Iterator;
import java.util.Properties; 

public class PropertyTest {
    public static void main(String[] args) { 
        Properties prop = new Properties();     
        try{
            //读取属性文件db.properties
            InputStream in = new BufferedInputStream (new FileInputStream("db.properties"));
            prop.load(in);     ///加载属性列表
            Iterator it=prop.stringPropertyNames().iterator();
            while(it.hasNext()){
                String key=it.next();
                System.out.println(key+":"+prop.getProperty(key));
            }
            in.close();
            
            ///保存属性到new.properties文件
            FileOutputStream oFile = new FileOutputStream("new.properties", true);//true表示追加打开
            prop.setProperty("test", "123");
            prop.store(oFile, "The New properties file");
            oFile.close();
        }
        catch(Exception e){
            System.out.println(e);
        }
    } 
}

你可能感兴趣的:(Java读写.properties配置文件详解)