021.8 properties(开发使用频率高)
内容:Properties基本存取、存储到持久化设备、从持久化设备读取、简单模拟收费软件试用结束
##
Properties——有配置文件的功能。
特点:
1、Hash table的子类,map集合中的方法都可以用
2、该集合没有泛型。键值都是字符串
3、是一个持久化的属性集,键值可以保存到集合和持久化设备上,键值的来源也可以是持久化设备。
##########################################################
基本存取
public class PropertiesDemo { public static void main(String[] args) { methodDemo(); } public static void methodDemo() { //Properties基本存取 Properties prop = new Properties(); prop.setProperty("xlsg", "21"); prop.setProperty("qldk", "20"); // prop.list(System.out); //这个方法调试使用 Set<String> set = prop.stringPropertyNames(); for(String name:set){ String value = prop.getProperty(name); System.out.println(name+"__"+value); } } }
#######################################################################
存储到持久化设备
通过Properties的store方法指定保存到什么文件里面
public class PropertiesDemo { public static void main(String[] args) throws IOException { methodDemo(); } public static void methodDemo() throws IOException { //Properties基本存取 Properties prop = new Properties(); prop.setProperty("xlsg", "21"); prop.setProperty("qldk", "20"); // prop.list(System.out); //这个方法调试使用 Set<String> set = prop.stringPropertyNames(); for(String name:set){ String value = prop.getProperty(name); System.out.println(name+"__"+value); } //永久化存储到设备上 FileOutputStream fos = new FileOutputStream("myfile\\we.properties"); //使用properties的store方法。 prop.store(fos, "my demo , person info"); } }
#########################################################################################
从持久化设备读取
public static void main(String[] args) throws IOException { // methodDemo(); methodDemo_read(); } private static void methodDemo_read() throws IOException { File configure_file = new File("myfile\\we.properties"); //读取流中的数据 Properties prop = new Properties(); //定义读取流和数据文件关联 FileInputStream fis = new FileInputStream(configure_file.toString()); prop.load(fis); prop.list(System.out); //测试使用 prop.setProperty("xlsg", "22"); prop.list(System.out); FileOutputStream fos = new FileOutputStream(configure_file); prop.store(fos, "my demo,person info"); fis.close(); fos.close(); }
步骤:1)创建properties对象
2)创建输入流对象
3)properties对象和输入流对象相关联
4)通过prop.setProperty("xlsg", "22");进行操作
5)保存prop.store(fos, "my demo , person info");
#########################################################################################
简单模拟收费软件试用结束
public static void main(String[] args) throws IOException { String value = read_count(); if(count(Integer.parseInt(value))){ //操作 value = Integer.toString(Integer.parseInt(value)+1); System.out.println(value); } else{ System.out.println("试用结束,请充值!"); } write_count(value); } private static boolean count(int num) { if(num<5){ return true; } return false; } private static void write_count(String value) throws IOException { File configure_file = new File("myfile\\count.properties"); FileOutputStream fos = new FileOutputStream(configure_file); Properties prop = new Properties(); prop.setProperty("count", value); prop.store(fos, "tryout count"); fos.close(); } private static String read_count() throws IOException { File configure_file = new File("myfile\\count.properties"); if(!configure_file.exists()){ configure_file.createNewFile(); } FileInputStream fis = new FileInputStream(configure_file); Properties prop = new Properties(); prop.load(fis); String value; String key = "count"; if(prop.containsKey(key)){ } else{ prop.setProperty(key, "0"); } value = prop.getProperty(key); return value; }
public static void main(String[] args) throws IOException { /* * 练习:定义功能记录程序运行次数,满足试用次数后,给出提示:试用次数已到,请注册。 * * 思路: * 1,需要计数器。这个软件使用一次计数一次。每使用一次,就进行计数累计。 * 2,计数器是程序中的一个变量,程序启动计数器计数,可是程序结束这个计数器就消失了。 * 下次启动会重新进行计数,原来计数的值没有保留下来。咋办? * 3,让这个计数器持久化。存储到文件中,为了标识数据可读性,数据起个名字。出现键值对。 * 而且还是一个持久化的键值对,Properties集合正好符合这个要求。 * */ if(isStop()){ System.out.println("试用次数已到,请注册"); return; } runcode(); } private static boolean isStop() throws IOException { //1,配置文件。 File configFile = new File("tempfile\\app.properties"); if(!configFile.exists()){//如果配置文件不存在,就创建。 configFile.createNewFile(); } //2,创建属性集。 Properties prop = new Properties(); //3,定义读取流和配置文件关联。 FileInputStream fis = new FileInputStream(configFile); //4,将流关联的数据读取到属性集中。 prop.load(fis); //5,通过属性集的指定键count,获取具体的次数。 String value = prop.getProperty("count"); int count = 0; //6, 对value进行判断,如果存在就对其自增。 if(value!=null){ count = Integer.parseInt(value); if(count>=5){ return true; } } count++;//对其值进行自增。 //7,将自增后的值和指定的键重新存储到属性集中,键相同,值覆盖。 prop.setProperty("count", Integer.toString(count)); //8,将属性集存储到配置文件中。对配置文件中的信息进行更新。 FileOutputStream fos = new FileOutputStream(configFile); prop.store(fos, "app run count"); //9,关闭资源。 fos.close(); fis.close(); return false; } //程序主体。 public static void runcode(){ System.out.println("程序运行....play"); }