应该程序:试用结束,请购买正版

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

/*
* 定义功能,获取一个应用程序的运行的次数,如果超过5次,
* 给出使用次数已到请注册的提示,并不要再运行程序
* 思路:
* 1,计数器
* 每次程序启动都需要计数一次并且是在原有的次数上进行计数。
* 2,程序一结束,计数器就消失了,那么再次启动该程序,
* 计数器又重新被初始化了。
* 而我们需要多次启动同一个应用程序,使用的是同一个计数器。
* 这就需要计数器的生命周期变长,从内存存储到硬盘文件中
* 3,设计计数器
* 首先,程序启动时,应该先读取这个用于记录计数器信息的配置文件。
* 获取上一次基数词次数,并进行试用次数的判断
* 其次,对该次数进行自增,并将自增后的次数重新存储到配置文件中
* 4,文件中的信息该如何进行存储并体现
* 直接存储次数值可以,但是不明确该数据的含义。所以起名字很重要
* 这就有了名字和值的对应,所以可以使用键值对。
* 可以用映射关系map集合与IO流的结合——properties集合
*/

    public class TestProperties2 {
        public static void main(String[] args) throws IOException {
            getAppCount();
        }

    public static void getAppCount() throws IOException {
        //1,将配置文件封装成File对象.
        File confile = new File("count.properties");
        //2,如果存在,就读取,不存在就创建
        if(!confile.exists()){
            confile.createNewFile();
        }
        Properties pro = new Properties();
        FileReader fr = new FileReader(confile);
        //3,将数据载入到properties集合中
        pro.load(fr);
        //4,定义计数器
        int count =0 ;
        String value =  pro.getProperty("time");//取出值是字符串
        //5,判断是否为空 不为空,就使count值等于属性值
        if(value!=null){
            //这步关键 是计数器与属性值的关联步骤
            count = Integer.parseInt(value);
            if(count>=5){
                throw new RuntimeException("试用结束,请购买正版");
            }
            //不为空就将字符串转换为整数
            System.out.println("你已经使用了"+count+"次");
        }
        //6,每调用一次,次数都增加一次,
        count++;
        //7,覆盖前一次值
        pro.setProperty("time",Integer.toString(count));
        FileWriter fw = new FileWriter(confile);
        //8,将修改后的信息重新存储到硬盘上
        pro.store(fw, "info");
        //关闭相关流
        fr.close();
        fw.close();
    }
}
posted @ 2016-11-05 17:13  第五个世界  阅读(95)  评论(0编辑  收藏  举报