内容: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"); }