zoukankan      html  css  js  c++  java
  • 毕向东_Java基础视频教程第20天_IO流(11~14)

    第20天-11-IO流(Properties简述)

    .properties是一种主要在Java相关技术中用来存储应用程序的可配置参数的文件文件扩展名。它们也可以存储用于国际化和本地化的字符串,这种文件被称为属性资源包(Property Resource Bundles)。

    第20天-12-IO流(Properties存取)

    package bxd;
    
    import java.io.IOException;
    import java.util.Properties;
    import java.util.Set;
    
    /*
    Properties是hashtable的子类, 也就是说它具备map集合的特点, 而且它里面存储的键值对都是字符串, 是集合中和IO技术相结合的集合容器.
    该对象的特点: 可以用于键值对形式的配置文件
    */
    public class PropertiesDemo_1 {
    
        // 以下方法没有关联文件, 都是在内存对象中进行操作
        public static void setAndGet() {
            Properties properties = new Properties();
    
            // 设置Properties元素
            properties.setProperty("zhangsan", "30");
            properties.setProperty("lisi", "40");
            System.out.println(properties);
    
            // 获取Properties值
            System.out.println("getProperty("zhangsan"): " + properties.getProperty("zhangsan"));
            System.out.println("getProperty("lisi"): " + properties.getProperty("lisi"));
    
            // 修改Properties值
            properties.setProperty("lisi", "89");
            Set<String> names = properties.stringPropertyNames();
            for (String s : names) {
                System.out.println(s + ":" + properties.getProperty(s));
            }
        }
    
        public static void main(String[] args) throws IOException {
            setAndGet();
        }
    }

    第20天-13-IO流(Properties存取配置文件)

    package bxd;
    
    import java.io.*;
    import java.util.Properties;
    
    public class PropertiesDemo_2 {
    
        // 演示: 如何将流中的数据存储到集合中, 想要将message.properties中键值数据存到集合中继续操作
        // 1. 用一个输入流和文件进行关联
        // 2. 读取一行数据, 将该行数据以"="作为分隔符进行切分, 结果存入字符串数组
        // 3. 等号左边为键, 右边为值, 存入到Properties对象中
        public static void method_1() throws IOException {
            Properties properties = new Properties();
            BufferedReader bufr = new BufferedReader(new FileReader("messages.properties"));
    
            String line;
            while ((line = bufr.readLine()) != null) {
                String[] arr = line.split("=");
                properties.setProperty(arr[0], arr[1]);
            }
            System.out.println(properties);
        }
    
        public static void loadDemo() throws IOException {
            Properties properties = new Properties();
            FileInputStream fis = new FileInputStream("messages.properties");
    
            // 加载
            properties.load(fis);
            System.out.println(properties);
    
            // 打印, This method is useful for debugging.
            properties.list(System.out);
        }
    
        public static void storeDemo() throws IOException {
            Properties properties = new Properties();
            FileOutputStream fileOutputStream = new FileOutputStream("info.txt");
            properties.setProperty("key_one", "value_one");
    
            // 保存
            properties.store(fileOutputStream, "just for test");
        }
    
        public static void main(String[] args) throws IOException {
            storeDemo();
        }
    }

    第20天-14-IO流(Properties练习)

    package bxd;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Properties;
    
    /*
    键值对数据是map集合, 数据是以文件形式存储, 使用IO技术, 即map + IO --> Properties; 如果处理xml, 则常常使用dom4j.
    */
    public class PropertiesDemo_3 {
    
        public static void main(String[] args) throws IOException {
            Properties properties = new Properties();
            File file = new File("info.txt");
    
            if (!file.exists()) file.createNewFile();
            properties.load(new FileInputStream(file));
    
            int count = 0;
            String value = properties.getProperty("time");
            if (value != null) {
                count = Integer.parseInt(value);
                if (count >= 5) {
                    System.out.println("对不起, 使用次数已到!");
                    return;
                }
            }
            count++;
    
            properties.setProperty("time", count + "");
            properties.store(new FileOutputStream(file), " ");
        }
    }
  • 相关阅读:
    痞子衡嵌入式:恩智浦MCU集成开发环境与开发工具教程
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.4)- 串行NOR Flash下载算法(Keil MDK工具篇)
    《痞子衡嵌入式半月刊》 第 17 期
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)
    《痞子衡嵌入式半月刊》 第 16 期
    痞子衡嵌入式:关于做技术的工作态度方面的几点建议
    痞子衡嵌入式:MCUXpresso IDE下添加C++源文件进SDK工程编译的方法
    痞子衡嵌入式:职场上有效地向师傅请教问题的几点建议
    痞子衡职场经验与见闻感悟分享
    痞子衡嵌入式:IAR在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致(J-Link/DAPLink)
  • 原文地址:https://www.cnblogs.com/echo1937/p/6361764.html
Copyright © 2011-2022 走看看