首页 > 其他分享 >IO流 p11 Properties

IO流 p11 Properties

时间:2023-06-07 21:14:08浏览次数:33  
标签:IO 配置文件 value properties p11 key import Properties

# Properties类

  • 基本介绍

    1. 专门用于读写配置文件的集合类

      配置文件的格式:

      键=值

      键=值

    2. 注意:键值对不需要有空格,值不需要用引号一起来。默认类型是String。

    3. Properties的常见方法

      1. load:加载配置文件的键值对 到Properties对象;
      2. list:将数据显示到指定设备/流对象;
      3. getProperty(key):根据键获取值;
      4. setProperty(key, value):设置键值对到Properties对象;
      5. store:将Properties中的键值对存储到配置文件,在idea中,保存信息到配置文件,如果含有中文,会存储为unicode码;
  • 读文件

    示例文件:mysql.properties

    ip=192.168.100.100
    user=root
    pwd=12345
    

    代码演示:

    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Properties;
    
    /**
     * @author: 86199
     * @date: 2023/5/8 20:06
     * @description:
     */
    public class Properties02 {
        public static void main(String[] args) throws IOException {
            //使用Properties类 来读取mysql.properties 文件
    
            //1. 创建Properties对象
            Properties properties = new Properties();
    
            //2. 加载指定配置文件
            properties.load(new FileReader("src\\mysql.properties"));
            //3. 把 k-v 显示到控制台
            properties.list(System.out);
            //4. 根据key获取对应的值
            String user = properties.getProperty("user");
            String pwd = properties.getProperty("pwd");
    
            System.out.println("用户名 = " + user);
            System.out.println("密码 = " + pwd);
        }
    }
    /*
    运行结果:
    -- listing properties --
    user=root
    pwd=12345
    ip=192.168.100.100
    root
    12345
    */
    
  • 修改文件

    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Properties;
    
    /**
     * @author: 86199
     * @date: 2023/5/8 20:52
     * @description:
     */
    public class Properties03 {
        public static void main(String[] args) throws IOException {
            //load加载的时候加载到properties对象,是继承了hashtable的,
            // 所以相同key的就替换value了
    
            //使用Properties类 来创建 配置文件,修改配置文件内容
            Properties properties = new Properties();
    
            //创建
            //1. 如果该文件没有这个key,就是创建
            //2. 如果该文件有这个key,就是修改
            /*
                Properties  父类是 Hashtable,底层就是Hashtable 核心方法
                    public synchronized V put(K key, V value) {
                        // Make sure the value is not null
                        if (value == null) {
                            throw new NullPointerException();
                        }
    
                        // Makes sure the key is not already in the hashtable.
                        Entry<?,?> tab[] = table;
                        int hash = key.hashCode();
                        int index = (hash & 0x7FFFFFFF) % tab.length;
                        @SuppressWarnings("unchecked")
                        Entry<K,V> entry = (Entry<K,V>)tab[index];
                        for(; entry != null ; entry = entry.next) {
                            if ((entry.hash == hash) && entry.key.equals(key)) {
                                V old = entry.value;
                                entry.value = value;//如果 key 存在,就替换
                                return old;
                            }
                        }
    
                        addEntry(hash, key, value, index);//如果是新k,就addEntry
                        return null;
                    }
             */
            properties.setProperty("charset", "utf8");
            properties.setProperty("user","汤姆");//注意中文保存时,是保存中文的 unicode码
            properties.setProperty("pwd","888888");
    
            //将k-v 存储到文件中即可
            properties.store(new FileOutputStream("src\\mysql2.properties"), null);
            System.out.println("保存配置文件成功~~");
        }
    }
    
    

    mysql2.properties文件内容:

    #Mon May 08 21:16:41 CST 2023
    user=\u6C64\u59C6
    pwd=888888
    charset=utf8
    
    

标签:IO,配置文件,value,properties,p11,key,import,Properties
From: https://www.cnblogs.com/zh-Note/p/17455323.html

相关文章

  • 通过location实现几秒后页面跳转
    location对象属性location对象属性 返回值location.href 获取或者设置整个URLlocation.host 返回主机(域名)www.baidu.comlocation.port 返回端口号,如果未写返回空字符串location.pathname 返回路径location.search 返回参数location.hash 返回片段#后面内容常见于链接锚点5秒......
  • Solution Set - “潮汐守候终结放逐月圆”
    目录0.「NOISimu.」游戏⭐1.「NOISimu.」海盗⭐2.「集训队作业2020-2021」「LOJ#3405」GemIsland2⭐3.「UR#12」「UOJ#181」密码锁⭐4.「UR#25」「UOJ#805」设计草图5.「UR#25」「UOJ#806」见贤思齐⭐6.「NOISimu.」哈密顿路7.「NOISimu.」统一省选8.「NOISim......
  • stm32 sdio
    SDIO学习笔记SDIO简介SDIOstm32驱动stm32的SDIO驱动参考st官方的参考例程,其中详细说明了如何操作,官方的文档翻译如下:1如何使用此设备它实现了一个高级通信层,用于从/向该存储器进行读写。所需的STM32硬件资源(SDIO和GPIO)在stm324xg_eval.h文件中定义,并在stm324xg_eval.c文件......
  • English Learning Articles 2023-06-07 Nonsurgical cat contraception could help cu
    Nonsurgicalcatcontraceptioncouldhelpcurboverpopulation,studysaysThereareanestimated600milliondomesticcatsintheworld,and80%ofthemareferalorstrayanimals.Spayingandneuteringcatshelpspreventhomelesskittensandovercrowdeda......
  • Shiro自定义异常无法被捕获总是抛出AuthenticationException解决方案
    问题描述配置Realm之后,发现在Realm中抛出的异常被无法捕获,最后抛出AuthenticationException异场景再现 下面是errorlog2023-06-0711:49:26.131[TID:N/A][][http-nio-9]ERRORo.s.c.sleuth.instrument.web.ExceptionLoggingFilter:54-Uncaughtexceptionthrow......
  • gpio反转测量中断执行时间
    voidtxxx_gpio_pulse_opt_start(void){/*设置gpio输出低电平*//*设置gpio输出高电平*//*设置gpio输出低电平*/}voidtxxx_gpio_pulse_opt_runnnig(void){/*设置gpio输出高电平*//*设置gpio输出低电平*/} 初始化之前调用txxx_gpio_pulse_opt_start(),初始化后中断......
  • AIO-3588MQ 车规级AI主板
    AIO-3588MQ采用Rockchip全新的车规级八核AISOC芯片RK3588M,支持8K视频编解码,支持六屏同时显示,支持多达16路摄像头输入,可实现大广角无缝拼接。可扩展硬盘、千兆网、WiFi6和5G/4G网络;支持虚拟机,支持多个系统同时运行。10年供货周期保证,可应用于智能座舱、ADAS等智能汽车领域中。全新......
  • JDK没有JAVAX.ANNOTATION.JAR包解决方案,无法使用@RESOURCE解决方案
    高版本JDK无法使用@Resource注解解决方案1.普通项目下载javax.annotation-api-1.3.2.jar,并在lib目录中引入即可2.Maven项目Maven项目:在pom.xml中进行配置<dependency><groupId>javax.annotation</groupId><artifactId>jsr250-api</artifactId><ver......
  • P9286 [ROI 2018] Extraction of radium
    来一发简单做法题目链接:P9286[ROI2018]Extractionofradium通过读题目,我们不难想到,找到既是横向最大值又是纵行最大值的位置,可以单独处理横向和纵向,满足一个方向的最大值就标记一次,那么标记两次的位置就是当前局面的一个可行点。这样静态操作就明晰了。现在考虑动态操作,把......
  • android-脱离AndroidStudio使用AVD
    android-脱离AndroidStudio使用AVD实际上,AVD不需要AndroidStudio图形界面也能独立运行。直接启动模拟器的方法是在终端中输入emulator-avd模拟器名称。默认情况下,emulator程序在C:\Users\users\AppData\Local\Android\Sdk\emulator\文件夹中。进入此文件夹,为emulator.exe......