Properties中的方法有很多种,最主要的功能就是实现数据的存入和读取。在 Java 的 Properties 类中,每个键(key)都是唯一的,所以不能直接存储多个值。
一、Properties的 load()方法和 getProperty()方法
Properties的 load()方法的用法是传入一个输入文件流的对象,然后load方法可以去读取里面的数据,也就是说可以把数据从文件中放到内存中展示。Properties的getProperty()方法的用法是根据指定的键(key) 去读取文件中与key绑定的值(value)的。Properties的getProperty()方法有两种重载方式,一种是getProperty(String key),一种是getProperty(String key,String defaultvalue),两种方式都是先找文件中的指定的key,看是否存在这个key,如果存在则返回key所对应的value值,若不存在,第一种方式直接返回null,第二种方式就是返回所给的 defaultvalue的默认值。
如下图:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesExample {
public static void main(String[] args) {
try {
Properties properties = new Properties();
FileInputStream fileInputStream = new FileInputStream("example.properties");
properties.load(fileInputStream);
fileInputStream.close();
String value1 = properties.getProperty("key1","value1");
String value2 = properties.getProperty("key2");
System.out.println("Value 1: " + value1);
System.out.println("Value 2: " + value2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
value1和value2的结果展示
因为我们在读取文件时,文件中并没有存放任何值,因此value1和value2都读不到需要的值,所以我们可以看到value1呈现的是第二种方式中的defaultvalue的值,而value2直接返回了null。
二、Properties的 setProperty()方法和 store()方法
之前我们用到了Properties的 getProperty()方法,知道了它有从文件中读取数据的功能,那我们想想它是否还有存入数据到文件中的功能呢?
Properties的setProperty()方法的用法正是这样的,它可以把数据从内存中存入到文件里。在setProperty(String key,String value)的方法中我们需要给一个key和一个相对应的value,通过store(OutputStream out,String comments)方法就会把这两个数据写到所对应的文件中。其中OutputStream表示输出流,comments是一串字符串,表示注释信息。
如下图:
Properties properties = new Properties();
properties.setProperty("key1", "value1");
properties.setProperty("key2", "value2");
OutputStream output = new FileOutputStream("example.properties");
properties.store(output, "This is an example properties file.");
output.close();
结果如下图所示
我们可以看到两个数据都已经存到了文件中,而且注释也呈现在了最上端。
最后,在使用Properties我们需要注意一些事情:
1.因为Properties的用法是根据key去找value,因此Properties的key值是唯一的,所以它不适用于需要存多个值在相同的key中。
2.键和值都必须是字符串:properties 类是基于字符串的,因此键和值都必须是字符串类型。如果需要存储其他类型的数据,可以使用字符串表示,并在使用时进行类型转换。