Properties类对象是用来存储程序的配置信息的,这个类实际上是一个键值均为String类型的Map集合,并且在表现形式上,键值是通过‘=’号连接的
比如:
这些配置信息决定了程序的很多属性的选择,Properties类就是用来获取和处理这种配置文件
基本方法:
1,设置(添加、修改)
——1,setProperty(String key,String value)
2,获取
——1,String getProperty(String key)
——2,Set<String> stringPropertyNames()//返回一个存有所有键值的Set集合
——3,load(InputStream in)//把输入流的内容导入到Properties对象中(输入流先与配置文件关联)
——4,load(Reader r)
3,输出
——1,list(PrintStream ps)//把Properties对象中的键值内容导入到输出流,在输出流中键和值用‘=’号相连
——2,list(PrintWriter pw)
4,存储
——1,store(OutputStream out,String comments)//通过输出和配置文件关联,把配置信息保存到配置文件中,comments是注释信息
——2,store(Writer out,String comments)
演示1:
import java.io.*;
import java.util.*;
class PropertiesDemo1
{
public static void main(String[] args) throws IOException
{
File file=new File("Demo.ini");
file.createNewFile();
BufferedWriter bufw=new BufferedWriter(new FileWriter(file));
Properties pro=new Properties();
pro.setProperty("age","50");
pro.setProperty("name","zhangsan");
pro.setProperty("id","123456789");
pro.list(System.out);//输出到屏幕
pro.store(bufw,"Demo");//输出到配置文件
bufw.close();
}
}
输出到屏幕:
保存到配置文件:
加‘#’号的均为注释,时间是自动加上的
演示2(使用刚才建立的配置文件)
import java.io.*;
import java.util.*;
class PropertiesDemo2
{
public static void main(String[] args) throws IOException
{
File file=new File("Demo.ini");
if(!file.exists())
file.createNewFile();
Properties pro=new Properties();
BufferedReader bufr=new BufferedReader(new FileReader(file));
pro.load(bufr);//要在建立输出流之前导入配置信息,否则建立输出流时就会用一个空文件覆盖,输出流不能选择续写,否则配置文件会出现重复的键
BufferedWriter bufw=new BufferedWriter(new FileWriter(file));
System.out.println(pro);
System.out.println("name : "+pro.getProperty("name"));
pro.setProperty("age","35");//修改配置信息
pro.store(bufw,"Demo");//输出到配置文件
bufw.close();
bufr.close();
}
}
/*
输出:
{age=50, name=zhangsan, id=123456789}
name : zhangsan
*/
文件变为:
age变成了35,时间也更新了
顺便说一下从文件获取键和值的原理:
首先通过输入流按行导入所有信息,每行信息成为一条字符串
然后用split方法,根据‘=’号把所有字符串分为两段,前一段就为键,后一段就为值