Properties
Properties是Map的子实现类,其定义如下
public class Properties extends Hashtable<Object,Object>
Hashtable是Map接口的一个子类,与Vector一样都是旧的操作类,与HashMap没什么区别。
Properties是操作属性文件的一个属性操作类。
属性文件中属性都是以字符串表示的 键值对 保存的 key=value
如果想要操作属性文件的属性 可以使用IO流配合Properties类完成
Windows中 .ini 后缀大多都是属性文件
Properties类常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
public String getProperty(String key) | 普通方法 | 根据Key获得Value(没有则返回null) |
public String getProperty(String key, String defaultValue) | 普通方法 | 根据Key获得Value(没有则返回defaultValue) |
public synchronized Object setProperty(String key, String value) | 同步方法 | 设置属性 |
public void store(OutputStream out, String comments) throws IOException | 普通方法 | 输出属性内容,同时声明属性的注释 |
public synchronized void load(InputStream inStream) throws IOException | 同步方法 | 读取输入流的内容 |
public void storeToXML(OutputStream os, String comment) throws IOException | 普通方法 | 以XML文件格式输出属性,同时声明注释 |
public synchronized void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException | 同步方法 | 从XML文件中读取内容 |
public synchronized Object setProperty(String key, String value)
public String getProperty(String key)
public String getProperty(String key, String defaultValue)
设置属性和获取属性,以及获取属性的重载
栗子:
public static void main(String[] args) {
Properties pro = new Properties();
pro.setProperty("3","可乐");
pro.setProperty("4","大瓶冰红茶");
pro.setProperty("2.5","罐装雪碧");
System.out.println(pro.getProperty("3"));
System.out.println(pro.getProperty("5"));
System.out.println(pro.getProperty("5","王老吉"));//没有key则返回设置的内容
}
程序运行结果:
可乐
null
王老吉
public void store(OutputStream out, String comments) throws IOException
输出属性内容,同时声明注释 (后缀是任意的,但最好按照标准设置为properties)
栗子:
public static void main(String[] args) {
Properties pro = new Properties();
File file = new File("D:" + File.separator + "IOtest" + File.separator + "T.properties");
pro.setProperty("3","可乐");
pro.setProperty("4","大瓶冰红茶");
pro.setProperty("2.5","罐装雪碧");
try {
pro.store(new FileWriter(file),"这里是注释");
} catch (IOException e) {
e.printStackTrace();
}
}
下个方法展示读取内容。
public synchronized void load(InputStream inStream) throws IOException
读取输入流的内容
栗子:
public static void main(String[] args) {
Properties pro = new Properties();
File file = new File("D:" + File.separator + "IOtest" + File.separator + "T.properties");
try {
pro.load(new FileReader(file));//读取的内容在对象内
System.out.println(pro);//Properties重写了toString方法
} catch (IOException e) {
e.printStackTrace();
}
}
程序运行结果:
{4=大瓶冰红茶, 3=可乐, 2.5=罐装雪碧}
public void storeToXML(OutputStream os, String comment) throws IOException
输出成XML文件
栗子:
public static void main(String[] args) {
Properties pro = new Properties();
File file = new File("D:" + File.separator + "IOtest" + File.separator + "op.XML");
pro.setProperty("3","可乐");
pro.setProperty("4","大瓶冰红茶");
pro.setProperty("2.5","罐装雪碧");
try {
pro.storeToXML(new FileOutputStream(file),"我是注释");
} catch (IOException e) {
e.printStackTrace();
}
}
D:\IOtest\op.XML内:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>我是注释</comment>
<entry key="4">大瓶冰红茶</entry>
<entry key="2.5">罐装雪碧</entry>
<entry key="3">可乐</entry>
</properties>
public synchronized void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException
读取XML文件内容
栗子:
public static void main(String[] args) {
Properties pro = new Properties();
File file = new File("D:" + File.separator + "IOtest" + File.separator + "op.XML");
try {
pro.loadFromXML(new FileInputStream(file));
System.out.println(pro);
} catch (IOException e) {
e.printStackTrace();
}
}
程序运行结果:
{4=大瓶冰红茶, 3=可乐, 2.5=罐装雪碧}
标签:Java,String,pro,Properties,void,File,public,拾贝
From: https://www.cnblogs.com/Ocraft/p/17809739.html