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构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
 
随机推荐
- 安装caffe(opencv3+anaconda3)
			
目录 仅安装CPU版本的caffe 1.下载相关的依赖包: 2.安装opencv3 3.安装caffe 参考文献: 仅安装CPU版本的caffe 1.下载相关的依赖包: sudo apt-get in ...
 - 微信小程序 c#后台支付结果回调
			
又为大家带来简单的c#后台支付结果回调方法,首先还是要去微信官网下载模板(WxPayAPI),将模板(WxPayAPI)添加到服务器上,然后在打开WxPayAPI项目中的example文件下的 Nat ...
 - flex的使用以及布局 转载
			
转 : http://www.cnblogs.com/waisonlong/p/6055020.html flex的使用以及布局 1.添加flex属性后的区别 1 2 3 4 5 6 7 8 9 ...
 - SSIS教程:创建简单的ETL包 -- 3. 添加日志(Adding Logging)
			
Microsoft Integration Services 包含日志记录功能,可通过提供任务和容器事件跟踪监控包执行情况以及进行故障排除. 日志记录功能非常灵活,可以在包级别或在包中的各个任务和容器 ...
 - 微信小程序(二)框架的基本组成
			
安装好 微信web开发者工具后. 让我们来了解一下工具的框架,上图: 工具总共分为三个部分,左上角红框框: 模拟器:模拟手机小程序界面,模拟器左上角可以选择手机型号,右上角红框处,千万别选成Offic ...
 - 运行javac编译报错:仅当显式请求注释处理时才接受类名称“xxxxxx”
			
发生原因:运行javac编译时没有加上扩展名.解决方法:加上.java扩展名重新编译即可,"xxxxxx.java".
 - 面试遇到的mysql面试题
			
1.MySQL数据库有哪些内置函数?1.数学函数 2.字符串函数 3.日期和时间函数 4.条件判断函数5.系统信息函数 6.加密和压缩函数 7.聚合函数8.格式或类型转化函数. 2.如何返回一张表的数 ...
 - wampserver 更改www目录
			
现在大家基本上开发php的有很大一部分都在用Wampserver,今天来讲讲怎么更改默认的www目录, 需要修改的文件有三个 apache2的配置文件 httpd.conf 和 Wampserver的 ...
 - win8、win10出现已禁用IEM时的处理办法
			
计算机管理--任务计划程序--任务计划程序库--Microsoft--Windows--TextServicesFramework--MsCtfMonitor--运行即可
 - android热加载随记
			
在我们日常的开发过程中,程序难免会出现BUG,一般有集中处理方式,发布新版本APP让用户来升级,或者打补丁来修复bug 前者本文在这里不错讨论,打补丁升级又分为两种一种是需要重启应用,一种是不需要.不 ...