zoukankan      html  css  js  c++  java
  • 应该程序:试用结束,请购买正版

    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();
        }
    }
    
    很多事情即将开始,很多人的命运即将改变
  • 相关阅读:
    Daily Scrumming 2015.10.20(Day 1)
    Buaaclubs项目介绍
    [转载] Linux创建用户后,切换用户报This account is currently not available
    NetFPGA-1G-CML从零开始环境配置
    Digilent Xilinx USB Jtag cable
    OVS流表table之间的跳转
    Linux换源
    Scapy安装以及简单使用
    Do in SDN
    KMP算法
  • 原文地址:https://www.cnblogs.com/liuzk/p/12458978.html
Copyright © 2011-2022 走看看