Properties文件操作


通常将系统相关的配置和属性,例如数据库、缓存等写在properties文件中,方便管理和维护。参考JDK7中的Properties类,学着进行了一些对properties文件的操作,总结一下,留存以后查看。


Properties 类说明

  • Properties 类表示了一个持久的属性集。
  • Properties可保存在流中或从流中加载。
  • 属性列表中每个键及其对应值都是一个字符串。
  • Properties继承于Hashtable。

文件所在目录:

  • /config/config.properties
  • /src/com/OperateProperties.java

properties件内容

http.host=127.0.0.1
http.port=8080

方法说明

  1. 读取properties文件
InputStream in = new FileInputStream(filePath);
Properties properties = new Properties();
properties.load(in);
  1. 根据key获取value
String host = properties.getProperty("http.host");
  1. 获取所有内容
Enumeration en = properties.propertyNames();
while (en.hasMoreElements()) {
    String key = (String) en.nextElement();
    String Property = properties.getProperty(key);
}
  1. 修改value
properties.setProperty("http.host", "192.168.1.1");
// 输出
OutputStream fos = new FileOutputStream(filePath);
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
properties.store(fos, "add key:'uri'");

代码

package com;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
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 notNine
 * @since 1.0
 * @version 2016.11.8
 */
public class OperateProperties {
    
    
    // 项目路径
    public static final String root = System.getProperty("user.dir");
    
    // properties文件路径
    public static final String filePath = root + "/config/config.properties";
    
    public static void main(String[] args) {
        
        // 根据key读取properties的value
        readProperties();
        
        // 读取properties所有内容
        // readAllProperties();
        
        // 写入properties内容
        // writeProperties();
    }
    
    /**
     * 读取properties内容,根据key获取value
     */
    public static void readProperties() {
        try {
            // 读取properties文件
            InputStream in = new FileInputStream(filePath);
            Properties properties = new Properties();
            properties.load(in);
            // 根据key获取value
            String host = properties.getProperty("http.host");
            String port = properties.getProperty("http.port");
            // 打印
            System.out.println("host:" + host + ",port:" + port);
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 读取properties内容,所有内容
     */
    public static void readAllProperties() {
        try {
            // 读取properties文件
            InputStream in = new FileInputStream(filePath);
            Properties properties = new Properties();
            properties.load(in);
            
            // 获取所有内容
            Enumeration en = properties.propertyNames();
            while (en.hasMoreElements()) {
                String key = (String) en.nextElement();
                String Property = properties.getProperty(key);
                // 打印
                System.out.println(key + Property);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 写入properties内容
     */
    public static void writeProperties() {
        try {
            // 读取properties文件
            InputStream in = new FileInputStream(filePath);
            Properties properties = new Properties();
            properties.load(in);
            
            // 修改host
            properties.setProperty("http.host", "192.168.1.1");
            
            // 原文件中没有uri,会新增加key和value,但是没有写入保存到文件中
            properties.setProperty("http.uri", "/info");
            // 输出
            OutputStream fos = new FileOutputStream(filePath);
            // 将此 Properties 表中的属性列表(键和元素对)写入输出流
            properties.store(fos, "add key:'uri'");
            
            // 根据key获取value
            String host = properties.getProperty("http.host");
            String port = properties.getProperty("http.port");
            String uri = properties.getProperty("http.uri");
            
            // 打印
            System.out.println("host:" + host + ",port:" + port + ",uri:" + uri);
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果

host:127.0.0.1,port:8080

你可能感兴趣的:(Properties文件操作)