本帖最后由 丁岩 于 2012-11-4 10:00 编辑
看了毕老师写的通过Properties写的记录软件读取次数的程序,并且如果超过指定count后程序会跳出,提示用户注册。我就在想也来写一个限制用户软件使用时间的程序吧,下面我来分享一下我的源代码,欢迎大家提一些宝贵意见。(默认是使用30天哦!!!)- package Gongtongti;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.Reader;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.Properties;
- public class Dates
- {
- private static Date d=null;
- private static Calendar c=null;
- private static Date d2=null;
- private static Properties pro=null;
- private static Date now=null;
- private static long ct;
- private static int DAYS=30;//使用天数
- public static void main(String[]args) throws IOException, ParseException, InterruptedException
- {
- init();
- compare();
- }
- public static void init() throws IOException, ParseException
- {
- pro=new Properties();
- File f=new File("C:\\count.ini");//写入磁盘的配置文件
- if(!f.exists())//如果第一次使用不存在则创建它
- {
- try {
- f.createNewFile();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("文件创建不成功!!");
- }
- }
- FileReader fr=new FileReader(f);
- pro.load(fr);//加载配置文件
- if(pro.getProperty("Flag")==null)//第一次执行程序时执行代码
- {
- boolean flag=true;
- d=new Date();//记录当前安装时间
- c=Calendar.getInstance();
- c.add(Calendar.DATE, DAYS);//将安装时间推迟DAYS天
- d2=c.getTime();
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
- pro.setProperty("Date", sdf.format(d));//存储Date记录第一次使用的时间
- pro.setProperty("Date2", sdf.format(d2));//存储Date2为到期时间
- pro.setProperty("Flag",flag+"");//Flag标识符用于记录该配置文件是否第一次创建
- FileWriter fw=new FileWriter(f);
- pro.store(fw, "");
- }
- else
- {
- now=new Date();//获得后期使用软件时的当前时间
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
- pro.setProperty("Date", sdf.format(now));//修改配置文件,替换Date安装时间的值
- FileWriter fw=new FileWriter(f);
- pro.store(fw,"");
- String date=pro.getProperty("Date");//读取Date(最近使用时间)和Date2(到期时间),然后做差求出剩余天数
- String date2=pro.getProperty("Date2");
- SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
- Date d1=sdf2.parse(date);
- Date d2=sdf2.parse(date2);
- long c1=d1.getTime();
- long c2=d2.getTime();
- ct=(c2-c1)/(1000*3600*24);
- }
- }
- public static void compare() throws InterruptedException//对剩余天数进行判断
- {
- int day=(int)ct;
- if(day>=0)//如果大于0,可以继续使用,并提示用户剩余多少天
- {
- System.out.println("感谢您的使用~距离试用期结束还有"+day+"天");
- }
- else//如果小于0说明已经过期,提示用户过期信息,并在10秒后退出程序
- {
- System.out.println("试用期结束,感谢您的使用,如需帮助请购买正版软件!!10秒后自动退出");
- Thread.sleep(10000);
- System.exit(0);
- }
- }
- }
复制代码 |
|