properties文件读写 自己写的几个方法

本文详细介绍了如何使用properties文件进行数据初始化和配置管理,包括读取与写入操作,以及三种不同的调用路径方法。同时,提供了关键代码片段和实例说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

properties文件读写 自己写的几个方法

/**
 * 描述:数据库初始化基本类
 * 
 * @作者 王群
 * @创建日期 2010-04-08
 * @修改人 xxx
 * @修改日期 xxx
 * @检查人 xxx
 * @检查日期 xxx
 */ 
import java.sql.SQLException; 
 
import com.ibatis.sqlmap.client.SqlMapClient; 
import com.oumasoft.bstmanage.ibatis.SqlMapConfig; 
import com.oumasoft.bstmanage.ibatis.data.JsgnPo; 
import com.oumasoft.bstmanage.ibatis.data.Test; 
 
import java.util.*; 
import org.w3c.dom.*; 
import java.io.*; 
import javax.servlet.http.HttpServletRequest; 
import javax.xml.transform.stream.*; 
import org.w3c.dom.*; 
import javax.xml.transform.*; 
import javax.xml.parsers.*; 
import javax.xml.transform.dom.*; 
import org.apache.log4j.Logger; 
import com.oumasoft.bstmanage.ibatis.dao.ClientDao; 
 
public class InitDBDao{ 
 static Logger logger = Logger.getLogger(ClientDao.class.getName()); 
 static SqlMapClient sqlMap = null; 
 private static File file = null;//读写文件  
 private static DocumentBuilderFactory factory = null; 
 private static DocumentBuilder builder = null; 
 
 /**
  * 修改properties文件,参数是map键值集合,根据键修改值,如果没有键值对就创建
  * @param filePath 文件路径
  * @param keyVal 内容参数
  * @param over是否覆盖,true的话就覆盖,false的话就是更新
  * @return
  */ 
 public static boolean writeProperties(String filePath, Map<String, String> keyVal ,boolean over) { 
  boolean flag = false; 
  Properties props = new Properties(); 
  InputStream ips = null; 
  try { 
   ips = new BufferedInputStream(new FileInputStream(filePath)); 
   props.load(ips); 
  } catch (FileNotFoundException e) { 
   // TODO Auto-generated catch block  
   e.printStackTrace(); 
  } catch (IOException e) { 
   // TODO Auto-generated catch block  
   e.printStackTrace(); 
  } finally { 
   try { 
    ips.close(); 
   } catch (IOException e) { 
    // TODO Auto-generated catch block  
    e.printStackTrace(); 
    logger.error("输入关闭出错"); 
   } 
    
  } 
   
 
  OutputStream fos = null; 
  if (over) { 
   // 将新添加的内容覆盖原来的内容  
   try { 
    fos = new FileOutputStream(filePath); 
    // 将keys转换成数组  
    // 将键值逐一添加到property中  
    for (Object str :  keyVal.keySet().toArray()) { 
     props.setProperty(str.toString(), keyVal.get(str)); 
    } 
    props.store(fos, "set"); 
    flag = true; 
   } catch (IOException e) { 
    e.printStackTrace(); 
   } finally { 
    try { 
     fos.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block  
     e.printStackTrace(); 
     logger.error("输出流无法关闭"); 
    } 
   } 
  }else{ 
   try { 
    fos = new FileOutputStream(filePath); 
    for (Object key : keyVal.keySet().toArray()) { 
     props.setProperty(key.toString(), keyVal.get(key).toString()); 
    }    
     props.store(fos,""); 
     flag = true; 
   } catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block  
    e.printStackTrace(); 
   } catch (IOException e) { 
    // TODO Auto-generated catch block  
    e.printStackTrace(); 
   } 
   finally { 
    try { 
     fos.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block  
     e.printStackTrace(); 
     logger.error("输出流关闭出错"); 
    } 
   } 
  } 
  return flag; 
 } 
  
  
  
  
 /**
  * properties文件按键得值
  * 
  * @param filePath properties 文件的路径
  * @param key 要取值的键
  * @return 得到的值
  */ 
 public static String readValue(String filePath, String key) { 
  Properties props = new Properties(); 
  InputStream ips = null; 
  try { 
   ips = new BufferedInputStream(new FileInputStream(filePath)); 
   props.load(ips); 
   String value = props.getProperty(key); 
   return value; 
  } catch (FileNotFoundException e) { 
   e.printStackTrace(); 
   return null; 
  } catch (IOException e) { 
   e.printStackTrace(); 
   return null; 
  } finally { 
   try { 
    if(null != ips){      
     ips.close(); 
    } 
   } catch (IOException e) { 
    e.printStackTrace(); 
   } 
  } 
 } 
  
 

 

properties文件调用路径的三种方法

1.方法一
InputStream fis =TestProperties.class.getClassLoader().getResourceAsStream("init.properties")

2.方法二(要求TestProperties和init.properties在同一目录下)
InputStream fis =TestProperties.class.getResourceAsStream("init.properties")

3.方法三,对于Web工程也可以这样。
先获取ServletContext,然后
InputStream in=context.getResourceAsStream("/WEB-INF/classes/init.properties");

 

转自: http://blog.youkuaiyun.com/songylwq/article/details/5634723
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值