java中的Properties类的操作

java中有个比较重要的类:Properties类,该类主要用于读取java的配置文件。每种语言都自己所支持的配置文件。java中的配置常为*.perperties文件,文件格式为文本格式,内容格式为“健=值”对格式,文本注释信息可用#注释。

 

 

Properties继承Hashtable


 

 

它提供了几个主要的方法:

 

1. getProperty ( String key),用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。

 

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

 

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

 

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

 

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

 

 

二、 Java 读取 Properties 文件

 

Java读取Properties文件的方法有很多

 

但是最常用的还是通过java.lang.Class类的getResourceAsStream(String name)方法来实现,如下可以这样调用:

 

InputStream in = getClass().getResourceAsStream(" 资源 Name");作为我们写程序的,用此一种足够。

 

或者下面这种也常用:

 

InputStream in = new BufferedInputStream(new FileInputStream(filepath));

 

三、相关实例

 

下面列举几个实例,加深对Properties类的理解和记忆。

 

我们知道,Java虚拟机(JVM)有自己的系统配置文件(system.properties),我们可以通过下面的方式来获取。

 

1、获取JVM的系统属性
 
public class Property {
    public static void main(String args[]){
        System.out.println(new Date());
        Properties p=System.getProperties();
        p.list(System.out);  //print all properties about JVM
    }
 
} 

 

 

2.读取本地配置文件test.properties并输出

 
public class Property {
    public static void main(String args[]){
//        System.out.println(new Date());
//        Properties p=System.getProperties();
//        p.list(System.out);  //print all properties about JVM
        
        Properties text=new Properties();
        try {
            text.load(new FileInputStream("E:\\workspace\\ch01\\text.properties"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        @SuppressWarnings("rawtypes")
    /*    Enumeration接口也在java.util包中 它的功能与Iterator差不多 都是用来遍历集合中的元素 
        但是枚举Enumeration只提供了遍历VectorHashtable类型集合元素的功能*/
        Enumeration num=text.propertyNames();  //获取配件文件内容中的关于keyEnumeration
        
        while(num.hasMoreElements()){
            String key=(String)num.nextElement();
            String value=text.getProperty(key);
            System.out.println(key + "=" + value);
        }
    }
 
}

 

 

结果:

age=23
name=linyuhuan
weight=140
long=212

 

3、一个比较综合的实例

 

根据key读取value

 

读取properties的全部信息

 

写入新的properties信息

 
package ch01;
 
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;
 
/**
 * 关于Properties类的常用操作
 * @author lin
 * 2015630
 */
public class TestProperties {
 
    public static void main(String[] args) throws IOException{
            WriteProperties("E:\\workspace\\ch01\\text.properties", "add2","2121");
    }
    
    //根据key读取value
    public static String GetValueByKey(String filePath,String key){
        Properties pps = new Properties();
        try{
            InputStream in= new BufferedInputStream(new FileInputStream(filePath));
            pps.load(in);
            String value = pps.getProperty(key);
            System.out.println(key + "=" + value);
            return value;
        }catch(IOException e){
            e.printStackTrace();
            return null;
        }
    }
    
    //读取配置文件的全部信息
    @SuppressWarnings("rawtypes")
    public static void GetAllProperties(String filePath) throws IOException{
        Properties pps = new Properties();
        InputStream in = new BufferedInputStream(new FileInputStream(filePath));
        pps.load(in);
        Enumeration num = pps.propertyNames(); //获取配置文件中的所有属性名enumeration
        while(num.hasMoreElements()){
            String key= (String)num.nextElement();
            String value=pps.getProperty(key);
            System.out.println(key + "=" + value);
        }
    }
    
    //写入Properties信息
    public static void WriteProperties(String filePath,String pKey,String pValue) throws IOException {
        Properties pps = new Properties();
        InputStream in= new FileInputStream(filePath);
        pps.load(in);
        OutputStream out = new FileOutputStream(filePath);
        pps.setProperty(pKey, pValue);
        pps.store(out, "Update " + pKey + " name");
    }
}

 

结果:test.properties文件

#Update add2 name
#Tue Jun 30 17:07:55 CST 2015
age=23
name=linyuhuan
weight=140
add2=2121
long=212

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
2022-12-19 15:03
黑龙江大学_2024
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议