第一種方式:
以我自己的項目為原型這里案例一個最簡單的獲取方法
定義一個獲取類
package com.boli.tianchuang.sys.util;
import java.io.*;
import java.util.Properties;
/**
* Desc:properties文件獲取工具類
* Created by
*/
public class PropertyUtil {
private static Properties props;
static{
loadProps();
}
synchronized static private void loadProps(){
props = new Properties();
InputStream in = null;
try {
//第一種,通過類加載器進行獲取properties文件流
//in = PropertyUtil.class.getClassLoader().getResourceAsStream("sysConfig.properties");
//第二種,通過類進行獲取properties文件流
in = PropertyUtil.class.getResourceAsStream("/properties/sysConfig.properties");
props.load(in);
} catch (FileNotFoundException e) {
//logger.error("sysConfig.properties文件未找到");
} catch (IOException e) {
//logger.error("出現IOException");
} finally {
try {
if(null != in) {
in.close();
}
} catch (IOException e) {
//logger.error("sysConfig.properties文件流關閉出現異常");
}
}
//logger.info("加載properties文件內容完成...........");
//logger.info("properties文件內容:" + props);
}
public static String getProperty(String key){
if(null == props) {
loadProps();
}
return props.getProperty(key);
}
public static String getProperty(String key, String defaultValue) {
if(null == props) {
loadProps();
}
return props.getProperty(key, defaultValue);
}
}
下面是我的項目的文件目錄
上面的類通過key就可以直接獲取value了
這里特別注意的就是你的項目的文件路徑了,這里一定要寫對。
第二種方式:
文件目錄與上圖相同,但是這里我多了增加、修改功能,以下是代碼和解釋
package com.boli.tianchuang.helper;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class CeShi {
private static Properties prop;
public static void load(String path){
//這里的path是項目文件的絕對路徑
//先獲取項目絕對路徑:Thread.currentThread().getContextClassLoader().getResource("").getPath();
//然后在項目路徑后面拼接"properties/sysConfig.properties";
prop= new Properties();// 屬性集合對象
FileInputStream fis;
try {
System.out.println(path);
fis = new FileInputStream(path);
prop.load(fis);
fis.close();// 關閉流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//參數為要修改的文件路徑 以及要修改的屬性名和屬性值
public static Boolean updatePro(String path,String key,String value){
if(prop==null){
load(path);
System.out.println("修改前重新加載一遍");
}
System.out.println("獲取添加或修改前的屬性值:"+key+"=" + prop.getProperty(key));
prop.setProperty(key, value);
// 文件輸出流
try {
FileOutputStream fos = new FileOutputStream(path);
// 將Properties集合保存到流中
prop.store(fos, "Copyright (c) Boxcode Studio");
fos.close();// 關閉流
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
System.out.println("獲取添加或修改后的屬性值:"+key+"=" + prop.getProperty(key));
return true;
}
//參數為要修改的文件路徑 以及要修改的屬性名和屬性值
public static String getPro(String path,String key){
if(prop==null){
load(path);
System.out.println("重新加載一遍");
}
FileInputStream fis;
try {
fis = new FileInputStream(path);
prop.load(fis);// 將屬性文件流裝載到Properties對象中
fis.close();// 關閉流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("查詢到的"+key+"的值:"+prop.getProperty(key));
return prop.getProperty(key);
}
}