a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 196|回复: 0

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

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导:java读取.properties文件; J  x% o7 \( I& Y/ I$ o+ A
通常,在实际项目中,为了便于配置管理,我们需要将一些配置管理信息存储在.properties文件中,然后直接从中读取,这样就避免了很多硬编码。下面,通过一个例子,详细讲解如何读取.properties文件的数据。
( T* w1 T: d1 Q. A7 F- {/ D& T# Z1 B$ R1.建立一个包config,专门存放.properties等配置文件,在config包下建一个文件a.properties,为了便于测试,在a.properties下添加如下信息:6 D: p1 h6 y8 a2 N* N+ _
name=kaka6 J$ [$ _* I: I1 O& G  x& l
age=281 M2 v4 a. M& W1 J
2.建立一个包prop,用来测试。在prop包下建立LoadProp.java文件。
5 H+ F! u! y. m" v8 G* O3.有很多方法来读取.properties文件,现将主要方法罗列出来:
  ~+ }8 a9 |" E, N# |a.通过class的getResourceAsStream()方法来读取& A) Y4 |0 N4 X& _* @, A
package prop;
& s( o2 D* F' q- @% b3 Q9 Wimport java.io.IOException;
8 B+ g- [$ x9 m4 K4 D* N# n6 g7 oimport java.io.InputStream;4 m9 f* l) g3 h! n
import java.util.Properties;
, G4 [/ r& M! \6 F: F, E+ fpublic class LoadProp {
0 s5 Q1 y, h; Q8 Kpublic static void main(String[] args) {
3 z/ Y* n6 U, i, n; l" oLoadProp loadProp = new LoadProp();
4 U9 ?" _; v' m' EInputStream in = loadProp.getClass().getResourceAsStream(“/config/a.properties”);
; {$ j  E: c9 q6 }, z& J$ z* o# SProperties prop = new Properties();- Z; A3 A2 \' l) q2 a
try {- [8 K5 J! S" H$ d
prop.load(in);  p) \" D( i2 j* R5 J' e9 r
} catch (IOException e) {
/ R' c' V' l) Z2 R7 e' M, ze.printStackTrace();1 ?, C  y, w' C; Q3 }
}% d8 |6 r+ O; @" ?
System.out.println(prop.getProperty(“name”, “none”));
& t( t/ w. f& m  q/ L$ ZSystem.out.println(prop.getProperty(“age”, “none”));
) W) r/ y3 X3 W}9 M) o" F. k% w* ^4 Y. f
}7 Q( h( H: p! V- H  _  X
一定要注意的是,class里的getResourceAsStream()方法里参数的类路径一定要在前面加上“/”,否则会报错( O# f- k" r: ]
b.使用class的getClassLoader()方法所得的ClassLoader的getResourceAsStream()来读取 package prop;# B. f6 B4 H  h$ k* P: u
import java.io.IOException;
$ R0 I  H0 U+ W1 S- _0 Iimport java.io.InputStream;
- K: s. R  L9 ~+ t6 timport java.util.Properties;
% w; ?# m" L. J; b0 e
6 J( W+ P& ]0 }8 H0 Z  T& A$ x4 z% v' ]& }( v9 D4 \
public class LoadProp {/ P; L8 I  T6 |% w
public static void main(String[] args) {$ Q) C0 ?. L5 l) R8 k/ v( o5 [
LoadProp loadProp = new LoadProp();
( Y3 K6 X+ b* i7 w* i, ]6 [) D& C5 bInputStream in = loadProp.getClass().getClassLoader().getResourceAsStream(“config/a.properties”);
! s. @2 w) e2 j0 n! E$ I% ^Properties prop = new Properties();+ Z! X/ ]$ t# |. ]1 \
try {
8 d. @+ H) ~, l/ x% Y/ i. Jprop.load(in);
' c6 p1 Q, q) M, |$ m# ~} catch (IOException e) {! q7 x6 K/ a) W3 Q1 u- O
e.printStackTrace();& ~% m6 e) G) m8 C2 O
}' G7 d3 P% p" v' @# s9 C
System.out.println(prop.getProperty(“name”, “none”));
% w( a: Z8 {! N; d' f+ A9 R; G1 {, aSystem.out.println(prop.getProperty(“age”, “none”));
1 H# V2 ]) p" D. f8 k8 u0 [1 C}
, J% ^4 O, ^6 O# M}, J& h3 [6 g6 N7 R: Z
ClassLoader的getResourceAsStream()方法与Class的getResourceAsStream()方法有点区别,在这里一定不要在类路径前面加上“/”,否则会报错,是不是很奇怪。
: c: v7 p9 n$ [9 W" t: Ec.使用ResourceBundle来读取& @  T; t: q7 c, [  z& B
package prop;
+ i- Q- p' W4 X+ Vimport java.util.ResourceBundle;
6 s& j* J+ S( W7 @public class LoadProp {1 d% n0 r- }8 }2 Z% L0 e. l  \
public static void main(String[] args) {
! z3 h  K8 u/ R/ o9 p1 ZResourceBundle rb = ResourceBundle.getBundle(“config/a”);+ V+ v; }0 k! ?: q# t
System.out.println(rb.getString(“name”));
( W# k0 _! m" D) T& K6 I, ?/ SSystem.out.println(rb.getString(“age”));
! _1 a0 |* e9 G" d* N}9 o: D# W. M0 C: ^4 n
}+ [% ^! L4 h  y6 ?/ B0 K5 P. w! n
注意,getBundle()方法里的参数,是baseName,不要把后缀名写出来,并且不要加“/”。2 G9 x% g4 w& I( Z0 e4 _; D
好了,这是读取.properties文件的几种主要方法,还有其他的方法,基本上都大同小异。另外,在Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法来读取.properties文件,这里就不详述了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-27 23:56 , Processed in 0.451117 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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