基于html的网站设计,网站设计所用的软件,h5响应式网站如何修改首页,接单app平台有哪些Properties 类已不是新东西了#xff0c;它在 Java 编程的早期就有了#xff0c;并且几乎没有什么变化。J2SE 的 Tiger 版本增强了这个类#xff0c;不仅可以用它在单独一行中指定用等号分隔的多个键-值对#xff0c;还可以用XML 文件装载和保存这些键-值对。在 驯服 Tiger…Properties 类已不是新东西了它在 Java 编程的早期就有了并且几乎没有什么变化。J2SE 的 Tiger 版本增强了这个类不仅可以用它在单独一行中指定用等号分隔的多个键-值对还可以用XML 文件装载和保存这些键-值对。在 驯服 Tiger的这一期文章中John Zukowski 展示了如何驾驭这匹新一代的“役马”。请在本文对应的讨论论坛上与作者及其他读者分享您对本文的想法您也可以单击文章顶部或底部的 讨论来访问该论坛。 J2SE 1.5 以前的版本要求直接使用 XML 解析器来装载配置文件并存储设置。虽然这并非是一件困难的事情并且解析器是平台的标准部分但是额外的工作总是有点让人烦。最近更新的 java.util.Properties 类现在提供了一种为程序装载和存储设置的更容易的方法 loadFromXML(InputStream is) 和 storeToXML(OutputStream os, String comment) 方法。 Properties 基本知识如果不熟悉 java.util.Properties 类那么现在告诉您它是用来在一个文件中存储键-值对的其中键和值是用等号分隔的如清单 1 所示。 清单 1. 一组属性示例foobarfubaz将 清单 1 装载到 Properties 对象中后您就可以找到两个键 foo 和 fu 和两个值 foo 的 bar 和 fu 的 baz 了。这个类支持带 /u 的嵌入 Unicode 字符串但是这里重要的是每一项内容都当作 String 。 清单 2 显示了如何装载属性文件并列出它当前的一组键和值。只需传递这个文件的 InputStream 给 load() 方法就会将每一个键-值对添加到 Properties 实例中。然后用 list() 列出所有属性或者用 getProperty() 获取单独的属性。 清单 2. 装载属性import java.util.*;import java.io.*;public class LoadSample { public static void main(String args[]) throws Exception { Properties prop new Properties(); FileInputStream fis new FileInputStream(sample.properties); prop.load(fis); prop.list(System.out); System.out.println(/nThe foo property: prop.getProperty(foo)); }}运 行 LoadSample 程序生成如清单 3 所示的输出。注意 list() 方法的输出中键-值对的顺序与它们在输入文件中的顺序不一样。 Properties 类在一个散列表hashtable事实上是一个 Hashtable 子类中储存一组键-值对所以不能保证顺序。 清单 3. LoadSample 的输出-- listing properties --fubazfoobarThe foo property: barXML 属性文件这里没有什么新内容。 Properties 类总是这样工作的。不过新的地方是从一个 XML 文件中装载一组属性。它的 DTD 如清单 4 所示。 清单 4. 属性 DTD?xml version1.0 encodingUTF-8?!-- DTD for properties --!ELEMENT properties ( comment?, entry* ) !ATTLIST properties version CDATA #FIXED 1.0!ELEMENT comment (#PCDATA) !ELEMENT entry (#PCDATA) !ATTLIST entry key CDATA #REQUIRED如 果不想细读 XML DTD那么可以告诉您它其实就是说在外围 properties 标签中包装的是一个 comment 标签后面是任意数量的 entry 标签。对每一个 entry 标签有一个键属性输入的内容就是它的值。清单 5 显示了 清单 1中的属性文件的 XML 版本是什么样子的。 清单 5. XML 版本的属性文件?xml version1.0 encodingUTF-8?!DOCTYPE properties SYSTEM http://java.sun.com/dtd/properties.dtdpropertiescommentHi/commententry keyfoobar/entryentry keyfubaz/entry/properties如果清单 6 所示读取 XML 版本的 Properties 文件与读取老格式的文件没什么不同。 清单 6. 读取 XML Properties 文件import java.util.*;import java.io.*;public class LoadSampleXML { public static void main(String args[]) throws Exception { Properties prop new Properties(); FileInputStream fis new FileInputStream(sampleprops.xml); prop.loadFromXML(fis); prop.list(System.out); System.out.println(/nThe foo property: prop.getProperty(foo)); }}关于资源绑定的说明虽 然 java.util.Properties 类现在除了支持键-值对还支持属性文件作为 XML 文件不幸的是没有内置的选项可以将 ResourceBundle 作为一个 XML 文件处理。是的 PropertyResourceBundle 不使用 Properties 对象来装载绑定不过装载方法的使用是硬编码到类中的而不使用较新的 loadFromXML() 方法。 运行清单 6 中的程序产生与原来的程序相同的输出如 清单 2所示。 保存 XML 属性新 的 Properties 还有一个功能是将属性存储到 XML 格式的文件中。虽然 store() 方法仍然会创建一个类似 清单 1 所示的文件但是现在可以用新的 storeToXML() 方法创建如 清单 5 所示的文件。只要传递一个 OutputStream 和一个用于注释的 String 就可以了。清单 7 展示了新的 storeToXML() 方法。 清单 7. 将 Properties 存储为 XML 文件import java.util.*;import java.io.*;public class StoreXML { public static void main(String args[]) throws Exception { Properties prop new Properties(); prop.setProperty(one-two, buckle my shoe); prop.setProperty(three-four, shut the door); prop.setProperty(five-six, pick up sticks); prop.setProperty(seven-eight, lay them straight); prop.setProperty(nine-ten, a big, fat hen); FileOutputStream fos new FileOutputStream(rhyme.xml); prop.storeToXML(fos, Rhyme); fos.close(); }}运行清单 7 中的程序产生的输出如清单 8 所示。清单 8. 存储的 XML 文件?xml version1.0 encodingUTF-8?!DOCTYPE properties SYSTEM http://java.sun.com/dtd/properties.dtdpropertiescommentRhyme/commententry keyseven-eightlay them straight/entryentry keyfive-sixpick up sticks/entryentry keynine-tena big, fat hen/entryentry keythree-fourshut the door/entryentry keyone-twobuckle my shoe/entry/properties结束语使 用 XML 文件还是使用老式的 ab 类型的文件完全取决于您自己。老式文件从内存的角度看肯定是轻量级的。不过由于 XML 的普遍使用人们会期望 XML 格式流行起来因为它已经被广泛使用了只不过没有用到 Properties 对象。选择完全在您。分析软件包 private XMLUtils 类的源代码以获得关于所使用的 XML 解析的更多信息。 PTest.javaimport java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properties;/** * 实现properties文件的读取 * author bbflyerwww * date 2006-08-02 */public class PTest { public static void main(String[] args) { try { long start System.currentTimeMillis(); InputStream is new FileInputStream(conf.properties); Properties p new Properties(); p.load(is); is.close(); System.out.println(SIZE : p.size()); System.out.println(homepage : p.getProperty(homepage)); System.out.println(author : p.getProperty(author)); System.out.println(school : p.getProperty(school)); System.out.println(date : p.getProperty(date)); long end System.currentTimeMillis(); System.out.println(Cost : (end - start)); } catch (IOException ioe) { ioe.printStackTrace(); } }} conf.properties# Configuration filehomepage http://hi.baidu.com/bbflyerwwwauthor bbflyerwwwschool WuHan Universitydate 2006-08-02 ResultSIZE:4homepage : http://hi.baidu.com/bbflyerwwwauthor : bbflyerwwwschool : WuHan Universitydate : 2006-08-02Cost : 0 在做程序时往往会有一些固定的或长期的值这些值或许在将来才会被更改。 由于程序完成时把这些值写在代码将来更改起不方便。而且容易忘记在代码中什么地方哪个文件中时所以我们建议将这些值写入配置文件中。 今天就让我们一起来看看在 JAVA 中对 properties 这种配置文件的操作吧。 1、properties 文件 #ParseZUrlNum.properties#Tue Nov 15 11:52:15 CST 2005nextnum360firstnum73secondnum72 2、读写文件 { ParseNZ pnz new ParseNZ(); Properties properties new Properties(); try { File f new File(ParseZUrlNum.properties); properties pnz.getProperties (e:/work/product/src/com/yesky/productattribute/p/z/model/ParseZUrlNum.properties);} catch (Exception e) { e.printStackTrace();}String firstnum properties.getProperty(firstnum);String secondnum properties.getProperty(secondnum);String nextnum properties.getProperty(nextnum); int firstInteger.parseInt(firstnum);int secondInteger.parseInt(secondnum);int nextInteger.parseInt(nextnum); System.out.println(firstnum firstnum);System.out.println(secondnum secondnum);System.out.println(nextnum nextnum); pnz.setProperties(first,second,next); } 3、ParseNZ 类 public class ParseNZ{ Properties p new Properties(); public Properties getProperties(String filename) throws IOException { ClassLoader cl this.getClass().getClassLoader(); FileInputStream input; // if(cl!null) //inputcl.getResourceAsStream(filename); input new FileInputStream(filename); //else //inputClassLoader.getSystemResourceAsStream(filename); p.load(input); return p; } public void setProperties(int first, int second, int next) { p.setProperty(firstnum,String.valueOf(first)); p.setProperty(secondnum,String.valueOf(second)); p.setProperty(nextnum,String.valueOf(next)); File file new File (e:/work/product/src/com/yesky/productattribute/p/z/model/ParseZUrlNum.properties); try { OutputStream fos new FileOutputStream(file); p.store(fos, ParseZUrlNum.properties); fos.close(); } catch (FileNotFoundException ex) { System.out.println(file is NULL !!!); ex.printStackTrace(); } catch (IOException ex) { System.out.println(IO is Error !!!); ex.printStackTrace(); } } } 本例中地址是写死的。可改为如 File file new File(System.getProperty(user.dir) /EMweb/WEB-INF/admininfo.properties); 这里面的关键是System.getProperty(user.dir) 返回当前工作目录。转载于:https://www.cnblogs.com/dainiao01/archive/2008/05/20/2250309.html