1.概念
Properties是Map的子类,是一个双列集合,键和值都是字符串类型。Map集合的方法它都能使用;
但是推荐是Properties自己特有的方法,对集合进行操作。
2.特有方法
//properties属于Map集合【该集合一般添加字符串键值对】
//特有方法[名字不同,但是用法一样,区别是参数类型不同]
public class Demo1 {
public static void main(String[] args) {
Properties pro = new Properties();
//setProperty()添加键值对[如果键重复,就覆盖值]类似于put方法
pro.setProperty("zhangsan", "武汉");
pro.setProperty("lisi", "河南");
pro.setProperty("wangwu", "孝感");
//pro.getProperty,根据键获取值类似于get方法
System.out.println(pro.getProperty("lisi"));
//pro.stringPropertyNames(),获取所有的键的集合类似于keySet
Set<String> keys = pro.stringPropertyNames();
for (String key : keys) {
String value = pro.getProperty(key);
System.out.println(key + "..." + value);
}
}
}
打印结果:
--------------------------------------------------------------------------------------------
河南
lisi...河南
zhangsan...武汉
wangwu...孝感
3.properties与IO流相关的两个方法
//properties与IO流相关的两个方法【一般以配置文件使用,加#则表示注释】
public class Demo2 {
public static void main(String[] args) throws IOException {
Properties pro = new Properties();
//load() 将本地文件的键值对数据读取到集合中
FileReader fr = new FileReader("day12_myIoOtherStream\\src\\com\\itheima\\properties\\config.properties");
pro.load(fr);
fr.close();
System.out.println(pro);
//store() 将集合中的数据以键值对的形式保存到文件中
pro.setProperty("wangmazi","25");
FileWriter fw = new FileWriter("day12_myIoOtherStream\\src\\com\\itheima\\properties\\config.properties");
pro.store(fw,"student");//第二个参数为注释【不支持中文】
fw.close();
}
}
打印结果:【count=2为文件原有的内容】
--------------------------------------------------------------------------------------------
config.properties:#student
#Fri Jul 09 20:48:58 CST 2021
count=2
wangmazi=25
控制台:{count=2}
4.properties与IO流相关的方法应用
//配置文件要求:
//后缀以.properties结尾,内容格式:键=值,一个键值对独占一行
import java.io.*;
import java.util.Properties;
//配置文件剩余次数
public class Demo3 {
public static void main(String[] args) throws IOException {
//1.创建集合存储
Properties pro = new Properties();
//2.创建流对象并指定文件
FileReader br = new FileReader("day12_myIoOtherStream\\src\\com\\itheima\\properties\\config.properties");
//3.调用集合load方法读取文件并得到键值对
pro.load(br);
br.close();
//4.调用集合getProperty得到键对应的值
String value = pro.getProperty("count");
//判断值的大小
//对字符串转化为整形再比较
int number = Integer.parseInt(value);
if(number>0){
System.out.println("感谢你的使用,你的机会还次数"+(number-1)+"次");
//使用一次则重新设置键对应的值-1
pro.setProperty("count",(number-1)+"");
FileWriter bw = new FileWriter("day12_myIoOtherStream\\src\\com\\itheima\\properties\\config.properties");
pro.store(bw,null);
bw.close();
}else {
System.out.println("你的次数用完了,请开通会员继续使用");
}
}
}
打印结果:【count=2为文件原有的内容】
--------------------------------------------------------------------------------------------
config.properties:#Fri Jul 09 20:53:17 CST 2021
count=1
wangmazi=25
控制台:感谢你的使用,你的机会还次数1次