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(),获取所有的键的集合类似于keySetSet<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 2021count=2wangmazi=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)+"次");//使用一次则重新设置键对应的值-1pro.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 2021count=1wangmazi=25控制台:感谢你的使用,你的机会还次数1次