说明的是,这里可以读写一般的properties文件,也可以对付XML文件,但是这个XML文件格式要求是定死了,
不是很灵活,看看我写的几个例子就自然明白
import java.io.*;
import java.util.Properties;
class PropertiesExam
{
String fileName;
Properties propCommon;
Properties propFromXML;
public PropertiesExam(String commonFileName,String XMLFileName)
{
this.fileName=fileName;
try
{
InputStream fin =new BufferedInputStream(new FileInputStream(commonFileName));
propCommon=new Properties();
propCommon.load(fin);
fin =new BufferedInputStream(new FileInputStream(XMLFileName));
propFromXML=new Properties();
propFromXML.loadFromXML(fin);
fin.close();
}
catch (FileNotFoundException e)
{
System.err.println("配置文件config.properties找不到!!");
e.printStackTrace();
}
catch (Exception e)
{
System.err.println("读取配置文件config.properties错误!!");
e.printStackTrace();
}
}
public static void main(String[] args)
{
PropertiesExam p=new PropertiesExam("prop.properties","properties.xml");
/*********** ***********
********** 普通文件 *********
*********** **********/
/***写入*/
p.propCommon.setProperty("age","27");
/****列出文件所有 键=值 ***/
p.propCommon.list(System.out);
/****列出文件中name键对应的值***/
System.out.println("name的值是: " +p.propCommon.getProperty("name"));
/*********** ***********
********** XML文件 *********
*********** **********/
/****列出文件所有 键=值 ***/
p.propFromXML.list(System.out);
/****列出文件中name键对应的值***/
System.out.println("name的值是: " +p.propFromXML.getProperty("name"));
try
{
Properties propWriteXML = new Properties();
propWriteXML.setProperty("one-two", "buckle my shoe");
propWriteXML.setProperty("three-four", "shut the door");
OutputStream fos =new BufferedOutputStream(new FileOutputStream("output.xml"));
//FileOutputStream fos =new FileOutputStream("rhyme.xml");
propWriteXML.storeToXML(fos, "JustAJoke");
fos.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
一下是XML文件的DTD,这个是固定的,下面的选择JDK API说明:
<?xml version="1.0" encoding="UTF-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>