黑马程序员技术交流社区
标题:
Properties的应用(自己写的,用于限制软件的使用时间,30.....
[打印本页]
作者:
丁岩
时间:
2012-11-4 09:51
标题:
Properties的应用(自己写的,用于限制软件的使用时间,30.....
本帖最后由 丁岩 于 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);
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2