|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发xml|加载JDK1.5(代号Tiger)中更新了java.util.Properties类,供应了从XML文件中读写key-value对属性的复杂办法:loadFromXML()和storeToXML()
1、基础加载属性的办法
lSample属性文件:sample.properties
foo=bar
fu=baz
l加载属性的Sample程序
importjava.io.FileInputStream;
importjava.util.Properties;
publicclassLoadSampleProperties{
publicstaticvoidmain(String[]args)throwsException{
Propertiesprop=newProperties();
FileInputStreamfis=newFileInputStream("props/sample.properties");
prop.load(fis);
prop.list(System.out);
System.out.println("
Thefooproperty:"+prop.getProperty("foo"));
}
}
l输入了局以下:
--listingproperties--
fu=baz
foo=bar
Thefooproperty:bar
2、从XML中加载属性
l上面是PropertiesDTD清单:
<?xmlversion="1.0"encoding="UTF-8"?>
<!--DTDforproperties-->
<!ELEMENTproperties(comment?,entry*)>
<!ATTLISTpropertiesversionCDATA#FIXED"1.0">
<!ELEMENTcomment(#PCDATA)>
<!ELEMENTentry(#PCDATA)>
<!ATTLISTentrykeyCDATA#REQUIRED>
lSampleXML属性文件:sample.xml(切合下面的PropertiesDTD)
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEpropertiesSYSTEM"http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Hello</comment>
<entrykey="foo">bar</entry>
<entrykey="fu">baz</entry>
</properties>
l<entry>标志指定详细一个属性,由key属性指定属性名,而<entry>标志的内容指定属性值
l<comment>标志能够用来指定正文
l从XML文件加载属性的Sample程序
importjava.io.FileInputStream;
importjava.util.Properties;
publicclassLoadSampleXML{
publicstaticvoidmain(String[]args)throwsException{
Propertiesprop=newProperties();
FileInputStreamfis=newFileInputStream("props/sample.xml");
prop.loadFromXML(fis);
prop.list(System.out);
System.out.println("
Thefooproperty:"+prop.getProperty("foo"));
}
}
l输入的了局是一样的
l能够看出办法很复杂:利用XML文件来保留属性,利用loadFromXML()办法替换本来的load()办法来加载XML文件中属性
3、更新XML文件中的属性值
lSample程序
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.util.Properties;
publicclassUpdateSampleXml{
publicstaticvoidmain(String[]args)throwsException{
Propertiesprop=newProperties();
FileInputStreamfis=newFileInputStream("props/sample.xml");
prop.loadFromXML(fis);
prop.list(System.out);
System.out.println("
Thefooproperty:"+prop.getProperty("foo"));
prop.setProperty("foo","HelloWorld!");
prop.setProperty("new-name","new-value");
FileOutputStreamfos=newFileOutputStream("props/sample.xml");
prop.storeToXML(fos,"StoreSample");
fos.close();
fis=newFileInputStream("props/sample.xml");
prop.loadFromXML(fis);
prop.list(System.out);
System.out.println("
Thefooproperty:"+prop.getProperty("foo"));
}
}
l下面的例子加载了sample.xml中的属性,更新了foo属性的值,并新加了new-name属性,挪用storeToXML()办法保留到原文件中,并改动正文内容为StoreSample
l程序实行后的sample.xml的内容以下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEpropertiesSYSTEM"http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>StoreSample</comment>
<entrykey="new-name">new-value</entry>
<entrykey="fu">baz</entry>
<entrykey="foo">HelloWorld!</entry>
</properties>
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。 |
|