J2SE API 读取 Properties 文件六种方法
http://webservices.ctocio.com.cn/115/8689615.shtml
1。使用 Java .util. Properties 类的load()方法
示例:InputStreamin=lnewBufferedInputStream(newFileInputStream(name));
Propertiesp=newProperties();
p.load(in);
2。使用 java .util.ResourceBundle类的getBundle()方法
示例:ResourceBundlerb=ResourceBundle.getBundle(name,Locale.getDefault());
3。使用 java .util.PropertyResourceBundle类的构造函数
示例:InputStreamin=newBufferedInputStream(newFileInputStream(name));
ResourceBundlerb=newPropertyResourceBundle(in);
4。使用class变量的getResourceAsStream()方法
示例:InputStreamin=JProperties.class.getResourceAsStream(name);
Propertiesp=newProperties();
p.load(in);
5。使用class.getClassLoader()所得到的 java .lang.ClassLoader的getResourceAsStream()方法
示例:InputStreamin=JProperties.class.getClassLoader().getResourceAsStream(name);
Propertiesp=newProperties();
p.load(in);
6。使用 java .lang.ClassLoader类的getSystemResourceAsStream()静态方法
示例:InputStreamin=ClassLoader.getSystemResourceAsStream(name);
Propertiesp=newProperties();
p.load(in);
补充
Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
示例:InputStreamin=context.getResourceAsStream(path);
Propertiesp=newProperties();
p.load(in);
这个类的作用在于帮你解决连接数据库时的 " 硬编码 " 问题 , 即驱动类 , 连接字符串 , 用户名 , 密码这些信息可以通过资源文件来获得 , 这种做法既增加了安全性 , 又使代码容易维护 .
处理数据库资源文件的类 DBConfig. java
这个类的作用在于帮你解决连接数据库时的 " 硬编码 " 问题 , 即驱动类 , 连接字符串 , 用户名 , 密码这些信息可以通过资源文件来获得 , 这种做法既增加了安全性 , 又使代码容易维护 .
处理数据库资源文件的类 DBConfig. java
- import java .util. Properties ;
- import java .io.*;
- public class DBConfig {
- private static Object initLock = new Object();
- private static DBConfig dbconfig = null ;
- private Properties props = null ;
- public static DBConfig getInstance() {
- if (dbconfig == null ) {
- synchronized (initLock) {
- if (dbconfig == null ) {
- dbconfig = new DBConfig();
- }
- }
- }
- return dbconfig;
- }
- private synchronized void loadProperties() {
- props = new Properties ();
- try {
- System.out.println( "Load pro file" );
- InputStream in = getClass().getResourceAsStream( "/db. properties " );
- props.load(in);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public String getProperty(String propName) {
- if (props == null ) {
- loadProperties();
- }
- return props.getProperty(propName);
- }
- }
- import java .util. Properties ;
- import java .io.*;
- public class DBConfig {
- private static Object initLock = new Object();
- private static DBConfig dbconfig = null ;
- private Properties props = null ;
- public static DBConfig getInstance() {
- if (dbconfig == null ) {
- synchronized (initLock) {
- if (dbconfig == null ) {
- dbconfig = new DBConfig();
- }
- }
- }
- return dbconfig;
- }
- private synchronized void loadProperties() {
- props = new Properties ();
- try {
- System.out.println( "Load pro file" );
- InputStream in = getClass().getResourceAsStream( "/db. properties " );
- props.load(in);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public String getProperty(String propName) {
- if (props == null ) {
- loadProperties();
- }
- return props.getProperty(propName);
- }
- }
import java .util. Properties ; import java .io.*; public class DBConfig { private static Object initLock = new Object(); private static DBConfig dbconfig = null; private Properties props = null; public static DBConfig getInstance() { if (dbconfig == null) { synchronized (initLock) { if (dbconfig == null) { dbconfig = new DBConfig(); } } } return dbconfig; } private synchronized void loadProperties() { props = new Properties (); try { System.out.println("Load pro file"); InputStream in = getClass().getResourceAsStream("/db. properties "); props.load(in); } catch (Exception e) { e.printStackTrace(); } } public String getProperty(String propName) { if (props == null) { loadProperties(); } return props.getProperty(propName); } }
资源文件 db. properties
url=jdbc:mysql://localhost:3306/example driver=org.gjt.mm.mysql.Driver username=root password=123654 |
在连接数据库的代码中 , 可以通过以下方式得到驱动类 ,url,username,password
- String driver = DBConfig.getInstance().getProperty( "driver" );
- String url = DBConfig.getInstance().getProperty( "url" );
- String username = DBConfig.getInstance().getProperty( "username" );
- String password = DBConfig.getInstance().getProperty( "password" );
- String driver = DBConfig.getInstance().getProperty( "driver" );
- String url = DBConfig.getInstance().getProperty( "url" );
- String username = DBConfig.getInstance().getProperty( "username" );
- String password = DBConfig.getInstance().getProperty( "password" );
String driver = DBConfig.getInstance().getProperty("driver"); String url = DBConfig.getInstance().getProperty("url"); String username = DBConfig.getInstance().getProperty("username"); String password = DBConfig.getInstance().getProperty("password");
P.S.
请注意这三个文件的位置 , 建议放在同一个目录下
一.
Properties
简介
java
.util.
Properties
继承自
java
.util.Hashtable
Properties
类表示一个持久的属性集.
Properties
可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串.
二.基本方法
2.1 如何从输入流中加载属性文件
使用load(InputStream is)方法:
- Properties properties = new Properties ();
- InputStream is = new FileInputStream( "conn. properties " );
- properties .load(is);
- is.close();
2.2 如何读属性文件中的值
使用getProperties(String key)方法:
- String temp = properties .getProperties(String key);
<注>重载的方法getProperties(String key, String default)方法 将在查询不到值的情况下,返回default.
即: 如果 null ==
properties
.getProperties(String key);
则有 default ==
properties
.getProperties(String key, String default);
2.3 如何获取属性文件中的所有的键
使用propertyNames()方法,该方法返回是键的枚举.
- Enumeration enumeration = properties .propertyNames();
2.4 如何修改属性文件中的值
使用
- setProperties(String key, String value)
方法.
<注>该方法调用的 Hashtable 的put方法.如果键存在,则修改值;如果键不存在,则添加值.
2.5 如何存储属性文件到输出流
使用
store
(OutputStream os, String description)方法:
- Properties properties = new Properties ();
- OutputStream os = new FileOutputStream( "test. properties " );
- String description = " store properties to test. properties " ;
- properties . store (os, description);
- os.close();
2.6 如何清空所有值
使用
- clear()
方法.
<注>该方法继承自 Hashtable 的clear()方法.清空哈希表.