zoukankan      html  css  js  c++  java
  • Peoperties类,SequenceInputStream序列流(合并流)、切割合并文件

    util包

    Peoperties是hashtable的子类。
    也就是说它具备了map集合的特点,而且它里面存储的键值对都是字符串。

    是集合中和IO技术相结合的集合容器。

    该对象的特点,可以用于键值对形式的配置文件。

    那么在加载数据时,需要数据有固定格式,通常键=值

    public class PropertiesDemo_11 {
    
        public static void main(String[] args) throws IOException {
            
            //setAndGet();
            //method_1();
            loadDemo();
        }
        public static void loadDemo() throws IOException
        {
            Properties prop = new Properties();
            FileInputStream fis = new FileInputStream("info.txt");
            
            //将流中的数据加载进集合。
            prop.load(fis);
            
            prop.setProperty("wangwu", "39");//改变的是内存的结果,文件没有被改
            FileOutputStream fos = new FileOutputStream("info.txt");
            
            prop.store(fos, "haha");
            //System.out.println(prop);
            prop.list(System.out);
            fis.close();
            fos.close();
            
        }
        //演示,如何将流中的数据存储到集合中
        //想要将info.txt中键值数据存到集合中进行操作
        /*思路:
        1、用一个流和info.txt文件关联
        2、读取一行数据,该行数据用“=”进行切割
        3、等号左边作为键,右边作为值,存入到Properties集合中即可。
        */
        public static void method_1() throws IOException
        {
            BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
            String line = null;
            Properties prop = new Properties();
            while((line=bufr.readLine())!=null)
            {
                String[] arr = line.split("=");
                //System.out.println(arr[0]+"..."+arr[1]);
                prop.setProperty(arr[0], arr[1]);
            }
            bufr.close();
            System.out.println(prop);
        }
        
        //设置和获取元素
        public static void setAndGet()
        {
            Properties prop = new Properties();
            prop.setProperty("zhangsan", "30");
            prop.setProperty("lisi", "39");
            //System.out.println(prop);
            //String value = prop.getProperty("lisi");
            //System.out.println(value);
            prop.setProperty("wangwu", 88+"");
            
            
            Set<String> name = prop.stringPropertyNames();
            for(String s:name)
            {
                System.out.println(s+":"+prop.getProperty(s));
                
            }
        }
        
    
    }
    PropertiesDemo_11
    /*
    用于记录应用程序运行次数。
    如果使用次数已到,那么给出注册提示。
    
    很容易想到的是:计数器。
    可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行了自增。
    可是随着该应用程序的退出,该计数器也在内存中消失了。
    
    下一次再启动该程序,又重新开始从0计数。
    这样不是我们想要的。
    
    程序即使结束,该计数器的值也存在。
    下次程序启动会先加载该计数器的值并加1后再重新存储起来。
    
    所以要建立一个配置文件,用于记录该软件的使用次数。
    
    该配置文件使用键值对的形式,
    这样便于阅读数据,并操作数据。
    
    键值对数据是map集合。
    数据是以文件形式存储,使用IO技术,
    那么map+io-->properties
    
    配置文件可以实现应用程序数据的共享。
    
     */
    public class PropertiesTest_14 {   //RunCount
    
        public static void main(String[] args) throws IOException {
            
            Properties prop = new Properties();
            
            File file = new File("count.properties");
            if(!file.exists())
                file.createNewFile();
            FileInputStream fis = new FileInputStream(file);
            
            //流中数据加载在集合中
            prop.load(fis);
            
            int count = 0;
            String value = prop.getProperty("time");
            if(value!=null)
            {
                count = Integer.parseInt(value);
                if(count>=5)
                {
                    System.out.println("您好,使用次数已到,拿钱!");
                    return;
                }
            }
            count++;
            prop.setProperty("time", count+"");
            
            FileOutputStream fos = new FileOutputStream(file);
            
            prop.store(fos,"");
            fos.close();
            fis.close();
        }
    
    }
    /*
    <persons>
        <person od="001">
            <name>zhangsan</name>
            <age>30</age>
            <address>bj</address>
        </person>
        <person>
            <name>
        </person>
    </persons>
    
    dom4j    dom for java    four
    */
    PropertiesTest_14
  • 相关阅读:
    蓝绿发布、灰度发布和滚动发布
    linux redis 设置密码:
    redis配置文件讲解
    17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
    CentOS 7下安装Redis
    压力测试工具介绍
    【k8s部署kong一】kong k8s 安装 以及可视化管理界面
    Jmeter连接ORACLE数据库
    Jenkins安装插件提示实例似乎已离线问题解决办法
    Fiddler增加显示请求响应时间列
  • 原文地址:https://www.cnblogs.com/cailingsunny/p/4698736.html
Copyright © 2011-2022 走看看