• 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
  • 相关阅读:
    资源限制
    垃圾收集器
    GC日志
    happens-before
    maven相互依赖导致无法编译成功
    LVM-逻辑卷常用命令和示意图
    取消RAID5
    扩展RAID5的容量
    模拟RAID5损坏
    创建RAID5
  • 原文地址:https://www.cnblogs.com/-nbloser/p/9009599.html
Copyright © 2020-2023  润新知