Properties集合小应用--限制用户对软件的使用次数
我们可以注意到一些付费软件可以试用一定的次数,超过限制次数后,就必须到官网购买正版才能继续使用。
这里就简单地模拟一下这种效果的实现。
* 需求:记录程序的启动次数,当启动次数超过3次后,要求使用者注册信息,不能再使用。
*思路:
*1.需要一个计数器,每当程序启动后,计数器就在原来的基础上自增。
*
*2.计数器是一个变量,程序一旦关闭,这个变量就不存在了,所以需要把计数器做持久化的
*存储,把它存储到硬盘的配置文件中,要用到IO技术。
*3.每次程序启动,就读取配置文件。直接在文件中存储数字,表达信息不明确。
*这时要使用键值对的形式存储,使用Map集合+io技术的综合,即Properties集合。
*这样,把配置文件内容读取到Properties集合中,对计数器做使用次数判断,
*如果在3次以内,就把计数器自增后,在写回配置文件中去
*否则,要求使用者注册,程序关闭。
本程序设置简单的图形化界面和提示信息,把使用次数定为3次。
代码如下:
public class PropertiesTest extends JFrame{
private JLabel show;
private JLabel notice;
public PropertiesTest(){
super("达达财务软件");
this.setLayout(new BorderLayout());
//创建标签,并且使标签在其显示区域内垂直居中对齐
show=new JLabel("欢迎使用达达财务软件",JLabel.CENTER);
notice=new JLabel("",JLabel.CENTER);
this.add(show);
this.add(notice,BorderLayout.SOUTH);
this.setBounds(500, 200, 300, 300);
//添加监听器,为窗口设置关闭动作
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
this.setVisible(true);
}
public static void main(String[] args) throws IOException, InterruptedException {
new PropertiesTest().getCounts();
}
public void getCounts() throws IOException, InterruptedException {
//把文件封装成对象
File confile=new File("count.ini");
if(!confile.exists()){//文件不存在
confile.createNewFile();//创建新文件
}
FileReader fr=new FileReader(confile);//输入流
Properties prop=new Properties();
prop.load(fr);//加载文件中的内容
int count=0;//用来记录程序启动次数
String value=prop.getProperty("times");//获取文件中存储的使用次数
if(value!=null){//如果不是第一次启动,
count=Integer.parseInt(value);//读取文件中的启动次数,以便在次基础上自增
if(count+1>3){//对使用次数进行判断
//改变标签提示信息
show.setText("试用结束,请在官网上注册后再使用,谢谢!");
Thread.sleep(3000);
System.exit(0);
}
}
count++;//不管是否是第一次启动软件,count都自增一次
notice.setText("您已经使用了"+count+"次,"+"剩余使用次数"+(3-count)+"次.");
//修改集合中的数据
prop.setProperty("times", ""+count);
//把集合写回到配置文件中
FileWriter fw=new FileWriter(confile);
prop.store(fw, "Times");
fr.close();
fw.close();
}
}
下面分别是运行第一次和第四次的界面显示:

用配置文件来记录软件使用次数,仅仅是很小的一种应用,更多的时候,配置文件用来记录用户对软件进行的个性化设置。
用户在软件的图形化界面上对软件进行个性设置,
这些都会写入软件的配置文件中持久存储,这样软件在下次启动时就可以读取配置文件中的设置。
只要配置文件保留,重装软件后仍然可以恢复之间前对软件的设置。
Windows中的配置文件多以".ini"结尾,Java中的配置文件多以".properties"结尾。
如果要便捷地存储更加复杂的配置信息,就要用到XML文件。
Properties集合小应用--限制用户对软件的使用次数的更多相关文章
- Java(35)IO特殊操作流&Properties集合
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228454.html 博客主页:https://www.cnblogs.com/testero ...
- 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类
---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...
- Properties集合的练习
1.更改文件中的数据,特定键的值: 需求:我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么. 请写一个程序判断是否有"lisi"这样的键存在,如 ...
- JAVA之旅(二十九)——文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习
JAVA之旅(二十九)--文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习 我们继续学习File 一.文件递归 我们可以来实现 ...
- MAC上有哪些优秀的日常软件| 入门级Mac OS 用户必备软件
本文整理的网友反馈的MAC上有哪些优秀的日常软件+入门级Mac OS 用户必备软件,感兴趣的朋友可以看看,下载下来试用一样便知实不实用.如有更好的推荐,欢迎留言. MAC上有哪些优秀的日常软件 Tim ...
- 微信小程序中用户登录和登录态维护
提供用户登录以及维护用户的登录状态,是一个拥有用户系统的软件应用普遍需要做的事情.像微信这样的一个社交平台,如果做一个小程序应用,我们可能很少会去做一个完全脱离和舍弃连接用户信息的纯工具软件. 让用户 ...
- 基于微信小程序的用户列表点赞功能
代码地址如下:http://www.demodashi.com/demo/13997.html 一.前言 (1).适合人群 1.微信小程序开发者 2.前端工程师 3.想入门学习小程序开发的人员 4.想 ...
- 带UI的小初高数学学习软件
结对编程项目总结 一.项目需求分析与功能总结 (1)用户注册功能 用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册. (2)设置密码功能 密码6-10位,必须含大小写字母和数 ...
- JavaSE19-IO特殊流和Properties集合
1.IO特殊操作流 1.1 标准输入流 System类中有两个静态的成员变量 public static final InputStream in:标准输入流.通常该流对应于键盘输入或由主机环境或用户 ...
随机推荐
- Java用数据结构解决实现问题之数学问题
有趣的整数: 完数:如果一个数字恰好等于他的因子之和,就叫做完数,需求是求出10000以内的所有的完数. 解法:1.用n去除以1-n之间的所有的整数,将能整除的被除数保存到一个数组中,作为n的一个因子 ...
- linux centos7 erlang rabbitmq安装
最终的安装目录为/opt/erlang 和 /opt/rabbitmq wget http://erlang.org/download/otp_src_21.0.tar.gztar zxvf otp_ ...
- 2018 Multi-University Training Contest 9 Solution
A - Rikka with Nash Equilibrium 题意:构造一个$n * m$的矩阵,使得$[1, n * m]$ 中每个数只出现一次,并且纳什均衡只出现一次. 思路:从大到小的放置,每 ...
- Entity Framework Code First级联删除(转)
使用Data Annotations: 如果我们要到一对主从表增加级联删除,则要在主表中的引用属性上增加Required关键字,如: public class Destination { public ...
- PHP获得真实客户端的真实时用到的IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP.如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP. HTTP_CLIENT_IP 是代理服务器发送的HTTP头. ...
- wpf--- TextBlock文字设置属性
ProgressBar控件的重要属性: FontFamily——控件中显示文本的字体 FontSize——控件中显示的字体的大小 Foreground——控件 ...
- 将keras模型在django中应用时出现的小问题——ValueError: Tensor Tensor("dense_2/Softmax:0", shape=(?, 8), dtype=float32) is not an element of this graph.
本文原出处(感谢作者提供):https://zhuanlan.zhihu.com/p/27101000 将keras模型在django中应用时出现的小问题 王岳王院长 10 个月前 keras 一个做 ...
- Android之第三方平台实现QQ登录和QQ分享
目前大多数APP都包含了第三方平台的登录,特别是QQ和微信,这篇博客主要讲的是如何实现QQ第三方平台实现QQ登录和分享功能,功能包含: 登录授权登录获取用户信息(昵称,头像,地址等) QQ分享给好友 ...
- 安装GraphicsMagick
环境 CentOS7/CentOS7.1 x64 1.检查yum 2.检查是否安装zlib,下载地址:http://www.zlib.net/ 3.安装libpng,下载地址:http://www. ...
- HDU 4687 Boke and Tsukkomi 一般图匹配,带花树,思路,输出注意空行 难度:4
http://acm.hdu.edu.cn/showproblem.php?pid=4687 此题求哪些边在任何一般图极大匹配中都无用,对于任意一条边i,设i的两个端点分别为si,ti, 则任意一个极 ...