第一种方式:
以我自己的项目为原型这里案例一个最简单的获取方法
定义一个获取类
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);
}
}