java.util.Properties

 1 Properties文件中分隔符及空格的处理

因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty 方法。如果在“有危险”的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败

zz=Hello
aa= Hello

bb = Hello 
cc = Hello

p.load(new FileInputStream("D:\iEMP\iEMP\etc\sysconf\asdf.properties"));

String va = p.getProperty("bb");
String vb = p.getProperty("aa");
System.out.println("AA"+va+"BB");
System.out.println("AA"+vb+"BB");

打印

AAHello BB
AAHelloBB

可见, = 号前后是可以有空白的,但是key之前,value之后则不可以!

 若

zz=Hello
aa : Hello

bb : Hello
cc = Hello

打印

AAHello cc = Hello BB
AAHello BB

将是两字符的键 ":="。可以使用   和   转义序列包括行结束符字符。跳过键后面的所有空白字符;如果键后的首个非空白字符是 '=' 或 ':',则忽略该字符并且跳过其后的所有空白字符。行中所有剩余的字符都成为关联元素字符串的一部分;如果没有剩余的字符,则该元素为空字符串 ""。一旦标识了组成键和元素的原始字符序列,则如上所述执行转义处理。

作为一个示例,以下三行都指定了键 "Truth" 和关联元素值 "Beauty"

 Truth = Beauty
        Truth:Beauty
 Truth                  :Beauty
 

另一个示例,以下三行都指定了单个属性:

 fruits                           apple, banana, pear, 
                                  cantaloupe, watermelon, 
                                  kiwi, mango

--------------------- 参照jdk api文档

------------- 在properties中被当做了换行符,既其后一行都被当成了当前行的value
------------- 可以出现“:”、“=”作为key、value分隔符,但是不能同时出现———以第一个出现的为准。


 @ConstructorProperties 的用法:

http://www.cnblogs.com/kaitao/archive/2012/02/21/2361671.html

2 Propertie 与xml文件

public static synchronized boolean storeToXML(
) {
Map<String, String> refConfMap = new HashMap();
refConfMap.put("aa", " LK ");
Properties cfgPro = new Properties();
cfgPro.putAll(refConfMap);

OutputStream out = null;
try {
File confFile = new File("d://test/test/aa.xml");
if (!confFile.exists()) {
confFile.createNewFile();
}
out = new FileOutputStream(confFile);
cfgPro.storeToXML(out, "Hello comment !");
} catch (IOException e) {
return false;
} finally {
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

return true;
}

private static void loadFromXML() {
Map<String, String> refConfMap = new HashMap();
Properties cfgPro = new Properties();
InputStream in;
try {
in = new FileInputStream("d://test//test/aa.xml");
cfgPro.loadFromXML(in );

String vv = (String) cfgPro.get("aa");
System.out.println(vv);

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

  

原文地址:https://www.cnblogs.com/FlyAway2013/p/3558213.html