a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 178|回复: 0

[专业语言] Java认证辅导:java读取.properties文件

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导:java读取.properties文件
# N, G% [. r% m; X通常,在实际项目中,为了便于配置管理,我们需要将一些配置管理信息存储在.properties文件中,然后直接从中读取,这样就避免了很多硬编码。下面,通过一个例子,详细讲解如何读取.properties文件的数据。
  H3 r  p# @3 `& E1.建立一个包config,专门存放.properties等配置文件,在config包下建一个文件a.properties,为了便于测试,在a.properties下添加如下信息:" U  I! A7 x& o/ u- I3 m! v( a
name=kaka
3 ~& Z) I. Q2 x# C9 nage=28
. y- l8 Y- j+ K0 |: t5 N- Q* a/ _2.建立一个包prop,用来测试。在prop包下建立LoadProp.java文件。6 v; Q! `+ V( l; ~* E
3.有很多方法来读取.properties文件,现将主要方法罗列出来:. k; g1 ^3 V, R# L# S3 I- R
a.通过class的getResourceAsStream()方法来读取" U, z& K  T% @1 p8 D
package prop;( x1 g* s; c' B4 H, ^
import java.io.IOException;9 ~5 ]7 @" }, e1 T
import java.io.InputStream;  e& |- T' q1 X
import java.util.Properties;* Q5 C: Q$ {# {% D9 }4 s
public class LoadProp {
! f7 j' B' a7 `$ hpublic static void main(String[] args) {
' A1 v, W. k' n3 w) r4 FLoadProp loadProp = new LoadProp();
9 \, H" z8 K3 nInputStream in = loadProp.getClass().getResourceAsStream(“/config/a.properties”);7 \( ~+ V- x8 V$ Z. b" ]2 G4 P" _
Properties prop = new Properties();
& T1 T1 x! O$ o, ^6 c; p1 Ztry {5 V1 ]/ D# V& F+ R3 K2 ~
prop.load(in);
% G3 i) T( N; w" w9 {8 q( K" ~. L} catch (IOException e) {
4 a  M* a( |. t; l" V' De.printStackTrace();# B& M% d0 N! X
}  r2 T- E0 D2 i6 H- B( }! F
System.out.println(prop.getProperty(“name”, “none”));
% A* S" w- [: m3 f4 {6 m- w& b9 ]System.out.println(prop.getProperty(“age”, “none”));
, U$ f; a& l& h! M0 `}: W/ B/ X3 K6 i; I6 ?, L
}+ b% P% {- m$ B) d
一定要注意的是,class里的getResourceAsStream()方法里参数的类路径一定要在前面加上“/”,否则会报错
& C0 h+ h, v/ o3 w3 x7 t: ub.使用class的getClassLoader()方法所得的ClassLoader的getResourceAsStream()来读取 package prop;
  \; ^7 k3 }2 V! aimport java.io.IOException;
( t+ A7 G- ~, u9 U- w" n- o+ Eimport java.io.InputStream;" ~5 t, s* s- n, Z" s5 N  @8 z
import java.util.Properties;$ B/ a( c8 O2 P

; d6 m4 [" Y8 K" E. b3 y1 B: O7 q8 b
public class LoadProp {+ P2 {- \2 {$ F2 @9 M- u# T
public static void main(String[] args) {
4 a$ o0 M, S. ]  ^5 B: pLoadProp loadProp = new LoadProp();
  N- R7 F6 Q0 IInputStream in = loadProp.getClass().getClassLoader().getResourceAsStream(“config/a.properties”);
. ~! u/ P0 L' N) i* MProperties prop = new Properties();
: s4 c/ V2 B& n0 _: p. s7 _# j; htry {
" m. l  N* _- v- s6 `+ Aprop.load(in);
" ]5 O3 E$ Y8 G: t$ M' C} catch (IOException e) {
& P3 _8 V& B# Y) A5 V5 g6 ze.printStackTrace();
  P% I+ T3 j; M9 T( ]) D}
4 g# V" k9 a6 }. Z$ F3 B# sSystem.out.println(prop.getProperty(“name”, “none”));8 Z; K( w/ t  r/ ~
System.out.println(prop.getProperty(“age”, “none”));
' w9 z! @' Y# o3 ]}
% |2 d8 e& }- S  T; m7 O% @# N}. K  p, n9 B- T1 I7 h" F" r* |
ClassLoader的getResourceAsStream()方法与Class的getResourceAsStream()方法有点区别,在这里一定不要在类路径前面加上“/”,否则会报错,是不是很奇怪。: s' @( B3 q8 W1 ~, t( F$ U
c.使用ResourceBundle来读取
8 T( h) m/ d4 D# y& z8 k/ Mpackage prop;* L- D6 c- @# u
import java.util.ResourceBundle;0 R  m) ^  }, C0 X8 ?- _/ f3 u
public class LoadProp {
+ g# j8 ]4 |" e  ?1 U& kpublic static void main(String[] args) {
' K( z( ^9 K8 P# S: m3 n6 y+ yResourceBundle rb = ResourceBundle.getBundle(“config/a”);
# R; V. x* p5 A! o! ~System.out.println(rb.getString(“name”));
; }) N' \9 K; w8 Y4 H* XSystem.out.println(rb.getString(“age”));
8 F" w" }. ?/ K0 F}
3 C7 u' D0 i8 J}7 W. w2 ]" x) \% U& O- V
注意,getBundle()方法里的参数,是baseName,不要把后缀名写出来,并且不要加“/”。! y+ B1 X/ L0 f, }: _; [+ U
好了,这是读取.properties文件的几种主要方法,还有其他的方法,基本上都大同小异。另外,在Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法来读取.properties文件,这里就不详述了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-10 06:27 , Processed in 0.272373 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表