java读取配置文件

原地址:http://www.cnblogs.com/Henry_zp/archive/2010/12/05/1896909.html

一般来说,首页的内容比较多,但内容大多也有重复的地方,比如说某几块内容都是文章,只是文章类别不同,或者说某几块都是商品,只是商品的分类不同,那么我们在后台取数据时,都需要根据类别ID来取值的。通常的做法都是写死ID,但写死又分为三种情况:

      1、前台写死ID,通过<jsp:include page="xx.do?id=xx">,可以进行动态的包含内容。

      2、可在service层写一个id的数组,String[] ids = {“”,"",""};用ids数组的下标来获得id值,这样也可以实现,如果数据库的ID值发生改变,只需要改变service层的ID数组就行。

      3、用配置文件(这个配置文件以.properties结尾)。将ID值写在配置文件中,表示的方法就和map一样,key=value,这样就OK。

      下面我要说的是第三种方案,个人觉得第三种方案比第二种方案好,因为第二种方案改数据时,去找的话,有点不太方便。 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.test.dao;
 
import java.util.MissingResourceException;
import java.util.ResourceBundle;
 
/**
  * 获取配置资源文件 [公共参数] 信息
  * @author Henry_zp
  */
public class CommonParam {
     private String propertyFileName;
     private ResourceBundle resourceBundle;
     public CommonParam() {
         propertyFileName = "com/test/dao/SysConfig" ;
         resourceBundle = ResourceBundle.getBundle(propertyFileName);
     }
     public String getString(String key) {
         if (key == null || key.equals( "" ) || key.equals( "null" )) {
             return "" ;
         }
         String result = "" ;
         try {
             result = resourceBundle.getString(key);
         } catch (MissingResourceException e) {
             e.printStackTrace();
         }
         return result;
     }
}

   

 

       这里配置文件的地址一定要写对,不然就会报错。SysConfig.properties里面的内容是:

?
1
2
#测试一
NewsId=002

       #表示注释,最后这个文件要以UTF-8的编码来保存。

       测试代码如下:

?
1
2
3
4
5
6
7
8
package com.test.dao;
 
public class Test {
     public static void main(String[] args) {
        CommonParam test = new CommonParam();
        System.out.println(test.getString( "NewsId" ));
}
}

 

 

         输出的结果为:002。

 

定义三个资源文件,放到src的根目录下面(必须这样,或者你放到自己配置的calsspath下面。
 
myres.properties
aaa=good
bbb=thanks

myres_en_US.properties
aaa=good
bbb=thanks

myres_zh_CN.properties
aaa=\u597d
bbb=\u591a\u8c22
 
import java.util.Locale;
import java.util.ResourceBundle;

/**
* 国际化资源绑定测试
*
* @author leizhimin 2009-7-29 21:17:42
*/

public class TestResourceBundle {
        public staticvoid main(String[] args) {
                Locale locale1 = new Locale("zh","CN");
                ResourceBundle resb1 = ResourceBundle.getBundle("myres", locale1);
                System.out.println(resb1.getString("aaa"));

                ResourceBundle resb2 = ResourceBundle.getBundle("myres"
, Locale.getDefault());
                System.out.println(resb1.getString( "aaa"));

                Locale locale3 = new Locale( "en", "US");
                ResourceBundle resb3 = ResourceBundle.getBundle( "myres", locale3);
                System.out.println(resb3.getString( "aaa"));
        }
}
 
运行结果:


good

Process finished with exit code 0
 
如果使用默认的Locale,那么在英文操作系统上,会选择myres_en_US.properties或myres.properties资源文件。
 
用该方式对配置文件中乱码转换为中文
resultName=new String(username.getBytes("ISO-8859-1"),"gbk");

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值