Syst em.ge tProp erty()参数大全
java.vers ion JavaRunti me En viron mentversi on
java.vendo r Ja va Ru ntime Envi ronme nt ve ndor
jav a.ven dor.u rl J ava v endor URL
jav a.hom e Ja va in stall ation dire ctory
ja va.vm.spec ifica tion.versi on Jav a Vir tualMachi ne sp ecifi catio n ver sionjav a.vm.speci ficat ion.v endorJavaVirtu al Ma chine spec ifica tionvendo r j ava.v m.spe cific ation.nameJavaVirtu al Ma chine spec ifica tionname
jav a.vm.versi on J ava V irtua l Mac hineimple menta tionversi on
java.vm.ve ndor Java Virt ual M achin e imp lemen tatio n ven dor
java.vm.n ame JavaVirtu al Ma chine impl ement ation name
ja va.sp ecifi catio n.ver sionJavaRunti me En viron mentspeci ficat ion v ersio n j ava.s pecif icati on.ve ndor Jav a Run timeEnvir onmen t spe cific ation vend or java.speci ficat ion.n ame Java Runt ime E nviro nment spec ifica tionname
jav a.cla ss.ve rsionJ ava c lassforma t ver sionnumbe r
j ava.c lass.path Jav a cla ss pa th
java.libra ry.pa th List of p athsto se archwhenloadi ng li brari es
java.io.tm pdirDefau lt te mp fi le pa th
javapi ler Nameof JI T com piler to u se
java.ext.d irs Pathof ex tensi on di recto ry or dire ctori es
os.na me Op erati ng sy stemname
os.archOpera tingsyste m arc hitec ture
os.versi on O perat ing s ystem vers ion
file.sepa rator Fil e sep arato r ("/" onUNIX)
pa th.se parat or P ath s epara tor (":" o n UNI X)
line.separ ator Line sepa rator ("\n" onUNIX)
us er.na me U ser's acco unt n ame
user.home Use r's h ome d irect ory
user.dirUser's cur rentworki ng di recto ry
使用方法很简单:S ystem.getP roper ty("u ser.d ir")
Syst em.ou t.pri ntln(Systt Prope rties().ge tClas s());
Syst em.ge tProp ertie s().l ist(S ystem.out);
P roper ty 类键值对
i mport java.util.*;
impo rt ja va.io.*;
p ublic clas s Loa dSamp le {
publ ic st aticvoidmain(Strin g arg s[])throw s Exc eptio n {
Pro perti es pr op =new P roper ties();
File Input Strea m fis =
n ew Fi leInp utStr eam("sampl e.pro perti es");
p rop.l oad(f is);
pr op.li st(Sy stem.out);
S ystem.out.print ln("\nThefoo p roper ty: " +
prop.getPr opert y("fo o"));
}
}
ja va.ut il.Pr opert ies类的使用
博客分类:Java
JavaX MLJ2S E编程UP
Prop ertie s 类已不是新东西了,它在J ava 编程的早期就有了,并且几乎没有什么变化。J2SE 的 Tige r 版本增强了这个类,不仅可以用它在单独一行中指定用等号分隔的多个键-值对,还可以用XML文件装载和保存这些键-值对。在驯服Tiger的这一期文章中,Jo hn Zu kowsk i 展示了如何驾驭这匹新一代的“役马”。
J2S E 1.5以前的版本要求直接使用 XM L 解析器来装载配置文件并存储设置。虽然这并非是一件困难的事情,并且解析器是平台的标准部分,但是额外的工作总是有点让人烦。最近更新的 jav a.uti l.Pro perti es 类现在提供了一种为程序装载和存储设置的更容易的方法:loadF romXM L(Inp utStr eam i s) 和
store ToXML(Outp utStr eam o s, St ringcomme nt) 方法。
Prope rties基本知识
如果不熟悉 ja va.ut il.Pr opert ies 类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的,如清单 1所示。
清单1. 一组属性示例
foo=b ar
f u=baz
将清单 1 装载到 Pr opert ies 对象中后,您就可以到两个键(foo 和 fu )和两个值( foo的 bar和 fu的 ba z )了。这个类支持带 \u的嵌入U nicod e 字符串,但是这里重要的是每一项内容都当作 St ring。
清单 2 显示了如何装载属性文件并列出它当前的一组键和值。只需传递这个文件的In putSt ream给 loa d() 方法,就会将每一个键-值对添加到 Prop ertie s 实例中。然后用list() 列出所有属性或者用 get Prope rty()获取单独的属性。
清单2. 装载属性
J ava代码
im portjava.util.*;
impor t jav a.io.*;
pu blicclass Load Sampl e {
publi c sta tic v oid m ain(S tring args[]) t hrows Exce ption {
Prop ertie s pro p = n ew Pr opert ies();
FileI nputS tream fis=
ne w Fil eInpu tStre am("s ample.prop ertie s");
pr op.lo ad(fi s);
pro p.lis t(Sys tem.o ut);
Sy stem.out.p rintl n("\n The f oo pr opert y: "+
p rop.g etPro perty("foo"));
}
}
运行 Lo adSam ple 程序生成如清单 3 所示的输出。注意 li st()方法的输出中键-值对的顺序与它们在输入文件中的顺序不一样。Prope rties类在一个散列表
(h ashta ble,事实上是一个 Hash table子类)中储存一组键-值对,所以不能保证顺序。
清单3. Loa dSamp le 的输出
-- lis tingprope rties --
fu=ba z
fo o=bar
Th e foo prop erty: bar
XML属性文件
这里没有什么新内容。 Pr opert ies 类总是这样工作的。不过,新的地方是从一个XML 文件中装载一组属性。它的 DTD如清单4 所示。
清单 4. 属性 DTD
dtd写道
<?xmlversi on="1.0" e ncodi ng="U TF-8"?>
<!-- D TD fo r pro perti es -->
<!ELEME NT pr opert ies ( comm ent?, entr y* )>
<!ATTLI ST pr opert ies v ersio n CDA TA #F IXED"1.0">
<!ELEME NT co mment (#PC DATA) >
<!ELEM ENT e ntry(#PCD ATA)>
<!ATTLI ST en try k ey CD ATA #REQUI RED>
如果不想细读X ML DT D,那么可以告诉您它其实就是说在外围<prope rties> 标签中包装的是一个 <co mment> 标签,后面是任意数量的<entry> 标签。对每一个
<entr y> 标签,有一个键属性,输入的内容就是它的值。清单 5 显示了清单 1中的属性文件的XML 版本是什么样子的。
清单5. XML版本的属性文件
Java代码
<?xmlversi on="1.0" e ncodi ng="U TF-8"?>
<!DOC TYPEprope rties SYST EM "h ttp://java.sun/d td/pr opert ies.d td">
xml标签大全<pr opert ies>
<co mment>Hi</comme nt>
<ent ry ke y="fo o">ba r</en try>
<en try k ey="f u">ba z</en try>
</p roper ties>
如果清单6所示,读取 XML版本的Prope rties文件与读取老格式的文件没什么不同。
清单6. 读取XML P roper ties文件
J ava代码
im portjava.util.*;
impor t jav a.io.*;
pu blicclass Load Sampl eXML{
pu blicstati c voi d mai n(Str ing a rgs[]) thr ows E xcept ion {
P roper tiesprop= new Prop ertie s();
Fi leInp utStr eam f is =
new F ileIn putSt ream("samp lepro ps.xm l");
pr op.lo adFro mXML(fis);
p rop.l ist(S ystem.out);
Syste m.out.prin tln("\nThe fooprope rty:" +
prop.getP roper ty("f oo"));
}
}
关于资源绑定的说明
虽然 jav a.uti l.Pro perti es 类现在除了支持键-值对,还支持属性文件作为XML 文件,不幸的是,没有内置的选项可以将 Re sourc eBund le 作为一个 XM L 文件处理。是的, Prop ertyR esour ceBun dle 不使用 Pr opert ies 对象来装载绑定,不过装载方法的使用是硬编码到类中的,而不使用较新的 lo adFro mXML() 方法。
运行清单 6中的程序产生与原来的程序相同的输出,如清单 2所示。
保存 XM L 属性
新的P roper ties还有一个功能是将属性存储到X ML 格式的文件中。虽然 st ore()方法仍然会创建一个类似清单 1 所示的文件,但是现在可以用新的s toreT oXML() 方法创建如清单 5 所示的文件。只要传递一个 Outp utStr eam 和一个用于注释的
St ring就可以了。清单 7展示了新的 stor eToXM L() 方法。
清单 7.将 Pr opert ies 存储为 XM L 文件
Java代码
impor t jav a.uti l.*;
imp ort j ava.i o.*;
publi c cla ss St oreXM L {
publi c sta tic v oid m ain(S tring args[]) t hrows Exce ption {
Prop ertie s pro p = n ew Pr opert ies();
prop.setPr opert y("on e-two", "b uckle my s hoe");
prop.setPr opert y("th ree-f our", "shu t the door");
pro p.set Prope rty("five-six", "pic k upstick s");
pr op.se tProp erty("seve n-eig ht","laythemstrai ght");
prop.setPr opert y("ni ne-te n", "a big, fat hen");
File Outpu tStre am fo s =
n ew Fi leOut putSt ream("rhyl");
pro p.sto reToX ML(fo s, "R hyme");
fos.close();
}
}
运行清单7 中的程序产生的输出如清单8 所示。
清单 8. 存储的 XM L 文件
Java代码
<?xml vers ion="1.0"encod ing="UTF-8"?>
<!DO CTYPE prop ertie s SYS TEM "http://jav a.sun/dtd/p roper ties.dtd">
<p roper ties>
<c ommen t>Rhy me</c ommen t>
<entr y key="sev en-ei ght">lay t hem s traig ht</e ntry>
<e ntrykey="five-six">pickup st icks</entr y>
<entr y key="nin e-ten">a b ig, f at he n</en try>
<en try k ey="t hree-four">shut thedoor</entr y>
<entr y key="one-two">buck le my shoe</ent ry>
</pr opert ies>
结束语
使用 XML文件还是使用老式的 a=b类型的文件完全取决于您自己。老式文件从内存的角度看肯定是轻量级的。不过,由于X ML 的普遍使用,人们会期望XML 格
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论