021.8 properties(开发使用频率高)
内容:Properties基本存取、存储到持久化设备、从持久化设备读取、简单模拟收费软件试用结束
##
Properties——有配置文件的功能。
特点:
1、Hash table的子类,map集合中的方法都可以用
2、该集合没有泛型。键值都是字符串
3、是一个持久化的属性集,键值可以保存到集合和持久化设备上,键值的来源也可以是持久化设备。
##########################################################
基本存取
public class PropertiesDemo
{
public static void main(String[] args)
{
methodDemo();
}
public static void methodDemo()
{
//Properties基本存取
Properties prop = new Properties();
prop.setProperty("xlsg", "21");
prop.setProperty("qldk", "20");
// prop.list(System.out); //这个方法调试使用
Set<String> set = prop.stringPropertyNames();
for(String name:set){
String value = prop.getProperty(name);
System.out.println(name+"__"+value);
}
}
}
#######################################################################
存储到持久化设备
通过Properties的store方法指定保存到什么文件里面
public class PropertiesDemo
{
public static void main(String[] args) throws IOException
{
methodDemo();
} public static void methodDemo() throws IOException
{
//Properties基本存取
Properties prop = new Properties();
prop.setProperty("xlsg", "21");
prop.setProperty("qldk", "20"); // prop.list(System.out); //这个方法调试使用 Set<String> set = prop.stringPropertyNames();
for(String name:set){
String value = prop.getProperty(name);
System.out.println(name+"__"+value);
} //永久化存储到设备上
FileOutputStream fos = new FileOutputStream("myfile\\we.properties"); //使用properties的store方法。
prop.store(fos, "my demo , person info");
} }
#########################################################################################
从持久化设备读取
public static void main(String[] args) throws IOException
{
// methodDemo();
methodDemo_read();
} private static void methodDemo_read() throws IOException
{
File configure_file = new File("myfile\\we.properties");
//读取流中的数据
Properties prop = new Properties(); //定义读取流和数据文件关联
FileInputStream fis = new FileInputStream(configure_file.toString());
prop.load(fis); prop.list(System.out); //测试使用 prop.setProperty("xlsg", "22"); prop.list(System.out); FileOutputStream fos = new FileOutputStream(configure_file); prop.store(fos, "my demo,person info"); fis.close();
fos.close();
}
步骤:1)创建properties对象
2)创建输入流对象
3)properties对象和输入流对象相关联
4)通过prop.setProperty("xlsg", "22");进行操作
5)保存prop.store(fos, "my demo , person info");
#########################################################################################
简单模拟收费软件试用结束
public static void main(String[] args) throws IOException
{
String value = read_count();
if(count(Integer.parseInt(value))){
//操作
value = Integer.toString(Integer.parseInt(value)+1);
System.out.println(value);
}
else{
System.out.println("试用结束,请充值!");
}
write_count(value);
} private static boolean count(int num)
{
if(num<5){
return true;
}
return false;
} private static void write_count(String value) throws IOException
{
File configure_file = new File("myfile\\count.properties");
FileOutputStream fos = new FileOutputStream(configure_file);
Properties prop = new Properties();
prop.setProperty("count", value);
prop.store(fos, "tryout count");
fos.close();
} private static String read_count() throws IOException
{
File configure_file = new File("myfile\\count.properties");
if(!configure_file.exists()){
configure_file.createNewFile();
}
FileInputStream fis = new FileInputStream(configure_file); Properties prop = new Properties();
prop.load(fis);
String value;
String key = "count";
if(prop.containsKey(key)){
}
else{
prop.setProperty(key, "0");
}
value = prop.getProperty(key);
return value; }
my code
public static void main(String[] args) throws IOException {
/*
* 练习:定义功能记录程序运行次数,满足试用次数后,给出提示:试用次数已到,请注册。
*
* 思路:
* 1,需要计数器。这个软件使用一次计数一次。每使用一次,就进行计数累计。
* 2,计数器是程序中的一个变量,程序启动计数器计数,可是程序结束这个计数器就消失了。
* 下次启动会重新进行计数,原来计数的值没有保留下来。咋办?
* 3,让这个计数器持久化。存储到文件中,为了标识数据可读性,数据起个名字。出现键值对。
* 而且还是一个持久化的键值对,Properties集合正好符合这个要求。
*
*/
if(isStop()){
System.out.println("试用次数已到,请注册");
return;
}
runcode();
}
private static boolean isStop() throws IOException {
//1,配置文件。
File configFile = new File("tempfile\\app.properties");
if(!configFile.exists()){//如果配置文件不存在,就创建。
configFile.createNewFile();
}
//2,创建属性集。
Properties prop = new Properties();
//3,定义读取流和配置文件关联。
FileInputStream fis = new FileInputStream(configFile);
//4,将流关联的数据读取到属性集中。
prop.load(fis);
//5,通过属性集的指定键count,获取具体的次数。
String value = prop.getProperty("count");
int count = 0;
//6, 对value进行判断,如果存在就对其自增。
if(value!=null){
count = Integer.parseInt(value);
if(count>=5){
return true;
}
}
count++;//对其值进行自增。
//7,将自增后的值和指定的键重新存储到属性集中,键相同,值覆盖。
prop.setProperty("count", Integer.toString(count));
//8,将属性集存储到配置文件中。对配置文件中的信息进行更新。
FileOutputStream fos = new FileOutputStream(configFile);
prop.store(fos, "app run count");
//9,关闭资源。
fos.close();
fis.close();
return false;
}
//程序主体。
public static void runcode(){
System.out.println("程序运行....play");
}
the answer
021.8 properties(开发使用频率高)的更多相关文章
- 微信小程序开发日记——高仿知乎日报(中)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...
- 微信小程序开发日记——高仿知乎日报(上)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...
- 配置开发支持高并发TCP连接的Linux应用程序全攻略
http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480 ...
- PHP 比 Java 的开发效率高在哪?
PHP 比 Java 的开发效率高在哪? 现在很多互联网应用都是php开发的,在很多人的观念里已经把php与java分到了两个开发领域,php是互联网,java是企业应用. 都说php的开发效率高,更 ...
- 为什么golang的开发效率高(编译型的强类型语言、工程角度高、在开发上的高效率主要来自于后发优势,编译快、避免趁编译时间找产品妹妹搭讪,既是强类型语言又有gc,只要通过编译,非业务毛病就很少了)
作者:阿猫链接:https://www.zhihu.com/question/21098952/answer/21813840来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- 笨重的mfc还在基于系统控件,熟练的mfc工程师还比不过学习Qt一个月的学生开发效率高(比较精彩,韦易笑)
作者:韦易笑链接:https://www.zhihu.com/question/29636221/answer/45102191来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新:擦,本来只有 ...
- 面系那个对象开发原则.高内聚.低耦合+Python安装详细教程+print输出带颜色的方法
面系那个对象开发原则.高内聚.低耦合 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计, ...
- 微信小程序开发日记——高仿知乎日报(下)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...
- 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
随机推荐
- jQuery中hover与mouseover和mouseout的区别分析
本文实例分析了jQuery中hover与mouseover和mouseout的区别.分享给大家供大家参考,具体如下: 以前一直以为在jquery中其实mouseover和mouseout两个事件等于h ...
- 阿里云 ECS服务器安装流程
1. 挂载硬盘 2. 上传文件 3 .vncserver unset DISPLAY who -u export DISPLAY= xhost + 4. java /etc/profile expor ...
- nginx timeout 配置 全局timeout 局部timeout web timeout
nginx比较强大,可以针对单个域名请求做出单个连接超时的配置. 比如些动态解释和静态解释可以根据业务的需求配置 proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响 ...
- 【angular5项目积累总结】一些正则积累
/^[1-9][0-9]{0,4}$/ /^[1-9][0-9]{0,4}(,[1-9][0-9]{0,4})*$/ /^([a-zA-Z0-9_\-])+\@(([a-zA-Z0-9\-])+\.) ...
- 【PhotoShop】模糊图片清晰处理
1.Ctrl+J复制出背景副本.对副本模式选择“亮度”. 2.选择“滤镜”菜单下的“锐化>USM锐化”命令,在设置窗口中适当调节一下锐化参数,根据你原图模糊的情况来调节,本图采用锐化数量为“15 ...
- laravel数据迁移的时候遇到的字符串长度的问题
问题截图: 问题解决办法: use Illuminate\Support\facades\Schema; Schema::defaultStringLength(191); ...
- MySQL中使用SHOW PROFILE命令分析性能的用法整理(配合explain效果更好,可以作为优化周期性检查)
这篇文章主要介绍了MySQL中使用show profile命令分析性能的用法整理,show profiles是数据库性能优化的常用命令,需要的朋友可以参考下 show profile是由Jerem ...
- 删除弹出提示框_MVC
<td> @Ajax.ActionLink(@shared.Delete, "DeleteServicetag", new { id = item.ID }, new ...
- 赶集网mysql开发36军规
赶集网mysql开发36军规 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算:cpu计算务必移至业务层 (2)控 ...
- csharp: Microsoft SqlHelper
from: Microsoft Data Access Application Block for .NET https://www.microsoft.com/en-us/download/con ...