java 遍历properties_java操作properties文件简单学习

java操作properties文件的工具类简单封装:

注意:由于本地和环境和linux服务的路径有区别,或者jetty,resin,tomcat部署后,文件的路径也是有区别的。比如我们在linux上把项目放在另一个磁盘下,此时,文件的路径就是项目所在的路径,而不是WEB-INF下,所以,这里需要灵活配置!

package com.sohu.util;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Properties;

import java.util.Set;

import org.springframework.core.io.ClassPathResource;

/**

* 测试properties读写处理

* @author liweihan ()

* @version 1.0 (2015年1月6日 下午2:23:27)

*/

public class TestProperties {

/**

* 说明:很多时候我们为了减轻数据库的压力,或者减少我们的服务的压力。

* 对于不经常变的数据,我们可以放在配置文件中!

*

*

*     containsKey()

*

*/

private static String PFILE = null;

public static final boolean OS_LINUX = "/".equals(File.separator);

static{

Properties p = new Properties();

try {

if(OS_LINUX) {

//方法1:

//p.load(TestProperties.class.getClassLoader().getResourceAsStream("config.properties"));

//方法2:还可以用这个方法加载

p.load(new ClassPathResource("config.properties").getInputStream());

//方法3:--应该用在具体路径的地方

//        InputStream in = new BufferedInputStream(new FileInputStream("config.properties"));

//        p.load(in);

} else {

//方法1:

//p.load(TestProperties.class.getClassLoader().getResourceAsStream("config-windows.properties"));

//方法2:

p.load(new ClassPathResource("config-windows.properties").getInputStream());

//方法3:---应该用在具体路径的地方

//        InputStream in = new BufferedInputStream(new FileInputStream("config-windows.properties"));

//        p.load(in);

}

PFILE = p.getProperty("goodsongPath").trim();

} catch (IOException e) {

e.printStackTrace();

}

}

//属性文件全名

//private static final String PFILE = "D:\\liweiSohu\\workspaceForEclipse\\R20141229_han\\search-star-HDSS-STAR-WEB-F\\src\\main\\resources\\goodsong.properties";

//上面是windows系统本地测试,下面是linux系统

//private static final String PFILE = System.getProperty("user.dir") + File.separator + "goodsong.properties";

//对应于属性文件的文件对象变量

private File m_file = null;

//属性文件的最后修改日期

private long m_lastModifiedTime = 0;

//属性文件所对应的属性对象变量

private Properties m_props = null;

//本类可能存在的唯一的唯一实例

private static TestProperties m_instance = new TestProperties();

/**

* 私有构造方法,用以保证外界无法直接实例化

*/

private TestProperties() {

m_file = new File(PFILE);

m_lastModifiedTime = m_file.lastModified();

if (m_lastModifiedTime == 0) {

System.err.println(PFILE + " file does not exist !");

}

m_props = new Properties();

try {

m_props.load(new FileInputStream(PFILE));

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 返回单一实例

* @return

*

* 2015年1月6日 下午2:58:02

* liweihan

*/

public static synchronized TestProperties getInstance() {

System.out.println(" ---- :" + System.getProperty("user.dir"));

return m_instance;

}

/**

* 读取一特定的属性项

* @param name属性项的项名

* @param defaultVal属性项的默认值

* @return属性项的值(如果此项存在),默认值(如此项不存在)

*

* 2015年1月6日 下午3:01:05

* liweihan

*/

public Object getConfigItem(String name,Object defaultVal) {

long newTime = m_file.lastModified();

//检查属性文件是否被其他的程序修改过,如果是,重读此配置文件

if (newTime == 0) {

//属性文件不存在

if (m_lastModifiedTime == 0) {

System.err.println(PFILE + " file does not exist !");

} else {

System.err.println(PFILE + " file was deleted !");

}

return defaultVal;

} else if (newTime > m_lastModifiedTime) {

//属性文件被修改过,重新加载配置文件

m_props.clear();

try {

m_props.load(new FileInputStream(PFILE));

}  catch (Exception e) {

e.printStackTrace();

}

}

m_lastModifiedTime = newTime;

Object val = m_props.getProperty(name);

if (val == null) {

return defaultVal;

} else {

return val;

}

}

/**

* 根据指定的属性名获得属性值

* @param itemName

* @return

*

* 2015年1月6日 下午3:39:55

* liweihan

*/

public String getValue(String itemName) {

return m_props.getProperty(itemName);

}

/**

* 设置属性名和属性值[此设置并不能保存到配置文件中]

* @param itemName

* @param value

*

* 2015年1月6日 下午3:45:08

* liweihan

*/

public void setValue(String itemName,String value) {

m_props.setProperty(itemName, value);

return;

}

/**

* 保存配置文件,指定文件名和抬头描述

* @param fileName

* @param description

*

* 2015年1月6日 下午3:56:09

* liweihan

* @throws Exception

*/

public void saveFile(String fileName,String description) throws Exception {

try {

FileOutputStream fout = new FileOutputStream(fileName);

m_props.store(fout, description);//保存文件

fout.close();

} catch (Exception e) {

System.out.println("无法保存指定的配置文件:" + fileName);

throw new Exception("无法保存指定的配置文件:" + fileName);

//e.printStackTrace();

}

}

/**

* 保存指定的配置文件

* @param fileName

*

* 2015年1月6日 下午3:59:04

* liweihan

* @throws Exception

*/

public void saveFile(String fileName) throws Exception {

saveFile(fileName,"");

}

/**

* 保存指定文件,采用原有名字

*

*

* 2015年1月6日 下午4:01:49

* liweihan

*/

public void saveFile() throws Exception{

if (PFILE.length() == 0) {

throw new Exception(PFILE + " file does not exist !");

}

saveFile(PFILE);

}

/**

* 得到配置文件中所有的key和value值,并放在一个map结合中

* @return

*

* 2015年1月6日 下午4:50:39

* liweihan

*/

public Map getAllKeyAndValue() {

Map map = new HashMap();

Enumeration en = m_props.propertyNames();

//遍历

while (en.hasMoreElements()) {

String key = en.nextElement().toString();//key值

String value = m_props.getProperty(key);

map.put(key, value);

}

return map;

}

/**

* 得到配置文件中所有的key和value值,并放在一个map结合中2

* @return

*

* 2015年1月7日 下午6:33:41

* liweihan

*/

public Map getAllKeyAndValue2() {

Map map = new HashMap();

m_props.list(System.out);

Object[] objs = m_props.keySet().toArray();

for (int i = 0; i 

map.put(objs[i].toString(), m_props.get(objs[i]).toString());

}

return map;

}

public static void main(String[] args) {

//1.获得java虚拟机的参数

Properties pps = System.getProperties();

pps.list(System.out);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值