java properties工具类_JAVA Properties工具类 | 学步园

今天遇到一个问题就是new FileInputStream(“”)不能获取相对路径的输入流,只能写绝对路径才能访问。

本人通过参考一些文件现总结如下:

1、首先是加载property属性文件

private static Properties properties;

private static Logger log = Logger.getLogger(Configuration.class);

private final static String PropfilePath = "load/proptertyFIle/system.properties";

static{

InputStream in = null;

properties = new Properties();

try {

String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();

//in = new BufferedInputStream (new FileInputStream(path + "/system.properties"));

in = Configuration.class.getClassLoader().getResourceAsStream(PropfilePath);

properties.load(in);

} catch (FileNotFoundException ex) {

log.error("Cannot find file [system.properties].");

ex.printStackTrace();

} catch (IOException ex) {

log.error("Read file[system.properties] Error.");

ex.printStackTrace();

} finally {

try {

if (in != null)

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

2、有key获取value

public static String  getValue(String key) {

if (properties.containsKey(key)) {

// 得到某一属性的值

String value = properties.getProperty(key);

return value;

} else

return "";

}

3、读取properties

public static void readProperties(String filePath) {

Properties props = new Properties();

try {

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

props.load(in);

Enumeration en = props.propertyNames();

while (en.hasMoreElements()) {

String key = (String) en.nextElement();

String Property = props.getProperty (key);

System.out.println(key+Property);

}

} catch (Exception e) {

e.printStackTrace();

}

}

4、 //写入propertity信息

public static void writeProperties(String filePath,String parameterName,String parameterValue) {

Properties prop = new Properties();

try {

InputStream fis = new FileInputStream(filePath);

//从输入流中读取属性列表(键和元素对)

prop.load(fis);

//调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。

//强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。

OutputStream fos = new FileOutputStream(filePath);

prop.setProperty(parameterName, parameterValue);

//以适合使用 load 方法加载到 Properties 表中的格式,

//将此 Properties 表中的属性列表(键和元素对)写入输出流

prop.store(fos, "Update '" + parameterName + "' value");

} catch (IOException e) {

System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");

}

}

5、测试

public static void main(String[] args) throws IOException {

System.out.println(Configuration.getValue("saveDays"));

System.out.println(new File("system.properties").getPath());

//注意需要绝对路径  提供字符串做参数的话,new FileInputStream需要写绝对路径。

Configuration.readProperties("D:\\myeclipseWorkplace\\test\\src\\load\\proptertyFIle\\system.properties");

System.out.println(System.getProperty("user.dir"));

Configuration.writeProperties("D:\\myeclipseWorkplace\\test\\src\\load\\proptertyFIle\\system.properties", "insert", "this is a test data");

}

你可能感兴趣的:(java,properties工具类)