http://hi.baidu.com/alizv/blog/item/d8cb2af4094662dbf3d38539.html
在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据我工作中用到的读取properties配置文件的方法小小总结一下,主要叙述的是读取配置文件的方法。
用spring读取配置文件,最典型的就是关于的连接,下面就是一个例子: 文件jdbc.properties: ------------------------------------------------------------------------------------- driverClassName com..jdbc.Driver url jdbc:mysql://localhost:3306/test username root password 1234 ------------------------------------------------------------------------------------ 引入spring的相关jar包,在applicationContext.xml中配置: ------------------------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>src/jdbc.properties</value> </property> </bean> <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>${driverClassName}</value> </property> <property name="url"> <value>${url}</value> </property> <property name="username"> <value>${username}</value> </property> <property name="password"> <value>${password}</value> </property> </bean> <bean id="dao" class="com.zh.model.DataDAO"> <property name="datasource"> <ref local="datasource"/> </property> </bean> </beans> ----------------------------------------------------------------------------------------- DataDAO. package com.zh.model; import javax.sql.DataSource; public class DataDAO { private DataSource datasource; public DataSource getDatasource() { return datasource; } public void setDatasource(DataSource datasource) { this.datasource = datasource; } } ------------------------------------------------------------------------------------连接是否成功,test.java package com.zh.logic; import java.sql.Connection; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import com.zh.model.DataDAO; public class test { public static void main(String [] args){ try{ String[] path = {"src/applicationContext.xml"}; ApplicationContext ctx = new FileSystemXmlApplicationContext(path); DataDAO dao = (DataDAO)ctx.getBean("dao"); Connection con = dao.getDatasource().getConnection(); System.out.println(con.isClosed()); //System.out.print(dao.getName()); }catch(Exception ex){ ex.printStackTrace(); } } } ------------------------------------------------------------------------------------- 2.用java.util.Properties这个类来读取 比如,我们构造一个ipConfig.properties来保存服务器ip地址和端口,如: ip=192.168.0.1 port=8080 -------------------------------------------------------------------------------------- 则,我们可以用如下程序来获得服务器配置信息: InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ipConfig.properties"); Properties p = new Properties(); try{ p.load(inputStream); } catch (IOException e1){ e1.printStackTrace(); } System.out.println("ip:"+p.getProperty("ip")+",port:"+p.getProperty("port")); -------------------------------------------------------------------------------------- 上面介绍了读取properties的内容,现实中我们还有可能要修改文件的内容,下面就看下怎么修改properties的内容,文件还是上面那个: package com.zh.logic; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Properties; public class TestRead { public void read(){ try { InputStream in = this.getClass().getClassLoader().getResourceAsStream("config/host.properties"); Properties p = new Properties(); p.load(in); //p.list(System.out); System.out.println(p.getProperty("ip")+","+p.getProperty("username")+","+p.getProperty("pwd")); } catch (Exception e) { e.printStackTrace(); } } public void update(String path){ try{ Properties p = new Properties(); FileInputStream in = new FileInputStream(path); p.load(in); FileOutputStream out = new FileOutputStream(path); p.setProperty("ip","1234567"); p.store(out,"ip update"); //p.save(out,"ip updated"); }catch(Exception ex){ ex.printStackTrace(); } } public static void main(String[] args){ TestRead td = new TestRead(); td.read(); td.update("config/host.properties"); td.read(); } } 可以看见修改之前的和修改之后的内容有改变;在上面有点要注意的: FileInputStream in = new FileInputStream(path); p.load(in); FileOutputStream out = new FileOutputStream(path); 就是p.load(in);要写在FileOutputStream out = new FileOutputStream(path);之前,不然的话,修改后的文件内容就成了ip=1234567,而port=8080这句被覆盖了;什么愿意大家自己想想吧; 上面介绍了两中读取properties文件的方法,希望对大家有帮助........