Properties(java.util.Properties)类,跟Map的key和value都为String类型比较相似,Properties类可以将 c key和 value键值对写道磁盘的properties文件中,然后可以再次读出来。本文讲述 Properties常用的机制。
创建Properties实例
为了使用Properties类,则必须使用Properties的实例,可以通过构造函数创建:
Properties properties = new Properties();设置Properties
可以通过setProperty()方法设置property (key - value):
properties.setProperty("email", "john@doe.com");设置了email为john@doe.com。
获取Properties
可以通过getProperty()获取对应key的值:
String email = properties.getProperty("email");移除Properties
可以通过remove()方法移除指定的键值对,参数是key:
properties.remove("email");迭代Properties
可以通过key迭代Properties :
Properties properties = new Properties();properties.setProperty("key1", "value1");properties.setProperty("key2", "value2");properties.setProperty("key3", "value3");Iterator keyIterator = properties.keySet().iterator();while(keyIterator.hasNext()){ String key = (String) keyIterator.next(); String value = properties.getProperty(key); System.out.println(key + " = " + value );}上面例子输出结果:
key1 = value1key2 = value2key3 = value3存储Properties到文件
可以通过store()方法将Properties的key-value存储到Properties文件中并且可以读出来:
Properties properties = new Properties();properties.setProperty("property1", "value1");properties.setProperty("property2", "value2");properties.setProperty("property3", "value3");try(FileWriter output = new FileWriter("data/props.properties")){ properties.store(output, "These are properties");} catch (IOException e) { e.printStackTrace();}Property文件编码
Properties文件的默认代码ISO-8859-1(Latin-1),然而我们常用的是 UTF-8编码,可以通过FileWriter构造函数的第二个参数指定具体的编码格式:
try(FileWriter output = new FileWriter("data/props.properties", Charset.forName("UTF-8"))){ properties.store(output, "These are properties");} catch (IOException e) { e.printStackTrace();}Property文件格式
Properties文件中每一行的格式是key=value:
#These are properties#Thu Jul 04 21:29:20 CEST 2019property2=value2property1=value1property3=value3#开头的是注释。
加载文件的数据到Properties
可以通过Properties的load() 方法将文件的数据加载到Properties:
Properties properties = new Properties();try(FileReader fileReader = new FileReader("data/props.properties")){ properties.load(fileReader);} catch (IOException e) { e.printStackTrace();}加载Properties文件指定编码
load()默认加载编码是ISO-8859-1 (Latin-1),如果需要使用其他格式,例如UTF-8,可以在使用 FileReader的第二个参数指定 UTF-8加载文件:
try(FileReader fileReader = new FileReader("data/props.properties", Charset.forName("UTF-8"))){ properties.load(fileReader);} catch (IOException e) { e.printStackTrace();}存储Properties中的数据到XML文件
Properties同样可以把数据存储到XML,调用storeToXML()方法:
Properties properties = new Properties();properties.setProperty("property1", "value1");properties.setProperty("property2", "value2");properties.setProperty("property3", "value3");try(FileOutputStream output = new FileOutputStream("data/props.xml")){ properties.storeToXML(output, "These are properties");} catch (IOException e) { e.printStackTrace();}Property XML文件编码
Properties XML property 文件默认的编码UTF-8,如果需要使用其他编码格式则使用第三个参数例如ISO-8859-1:
try(FileOutputStream output = new FileOutputStream("data/props.xml")){ properties.storeToXML(output, "These are properties", Charset.forName("ISO-8859-1"));} catch (IOException e) { e.printStackTrace();}XML Property文件格式
Properties对象存储到 XML文件格式如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "https://blog.csdn.net/cgsyck/article/details/108449964