java学习笔记----Properties类详解

前言

在学习JavaWeb连接数据库注册驱动时,第一次接触到了Properties类,做一些笔记供自己也供兄弟朋友萌参考参考。

Properties类干啥的?

Properties主要用于读取配置文件,主要的作用是通过修改配置文件可以方便的修改代码中的参数,实现不用改class文件即可灵活变更参数。(因为java运行中java文件会变成class文件,之后无法通过反编译找到原样的代码,这样的话,如果java类中某个参数变更,就很难灵活的实现参数修改,这个时候properties 文件就能很灵活的实现配置,减少代码的维护成本和提高开发效率。)
(看不懂也没事,接着往下再看看~)

Properties类继承自Hash Table类(哈希表)并且实现了Map接口,使用键值对的形式来保存属性集。不过,Properties有特殊的地方,就是它的键和值都是字符串类型。
(哈希表(HashTable)又叫做散列表,是根据键值对而直接访问的数据结构。)

Properties中的主要方法

  1. 构造方法
    public Properties()
    创建一个无默认值的空属性列表。
  2. public Object setProperty(String key, String value) :
    给属性列表中添加键和值,并且强制都使用String
  3. public Set stringPropertyNames():
    遍历的功能
  4. public String getProperty(String key)
    用指定的键在此属性列表中搜索属性
    可保存在流中或从流中加载,只能使用属性集合类
  5. public void load(Reader reader)
    public void load(InputStream inStream)
    将文本文件中的数据加载到属性集合中 ,这个方法可以从properties属性文件对应的文件输入流中,加载属性列表到Properties类对象,如代码所示:
Properties pro = new Properties();
FileInputStream in = new FileInputStream("a.properties");
pro.load;
in.close();
  1. store(OutputStream out, String comments)
    store(Writer writer, String comments)
    把集合中的数据保存到文本文件中

    OutputStream out:字节流输出,不能写中文 (这里将会在下面做出简单解释)
    Writer writer:字符流输出,可以写中文
    String comments:注释,用来解释说明保存的文件是什么,不能使用中文,否则会产生乱码。默认是unicode编码,一般使用""空字符串。

简单java代码实现

import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Properties;

public class propertiesDemo {
    public static void main(String[] args) throws IOException {
        show01();
        show02();
    }
    private static void show01() throws IOException {
        Properties prop = new Properties();  //构造一个Properties对象
        prop.setProperty("user","路飞");     //给属性列表添加键和值,
        prop.setProperty("password","234");
        prop.setProperty("id","海贼王");
        FileWriter fw = new FileWriter("D:\\1.txt"); //构造一个字符流输出对象
        prop.store(fw,"user_zhushi");//使用字符流输出对象向文件1.txt输入properties属性集
        fw.close();

    }
    private static void show02() throws IOException {
        Properties prop = new Properties();
        prop.setProperty("name","zys");
        prop.setProperty("password","234");
        prop.setProperty("sex","boy");
        FileOutputStream fos = new FileOutputStream("D:\\2.txt");//构造一个字节流输出对象
        prop.store(fos,"user_zhushi1");
        fos.close();
    }
}

运行结果:
在这里插入图片描述
运行结束到D盘查看就会发现多了两个文件如下:
在这里插入图片描述
打开这两个文件就可以看到相关的内容如下:
在这里插入图片描述

关于OutputStream out:字节流输出,不能写中文的简单解释

若是将代码中方法show02()中的name的值改为中文“张一山”,运行时不会出现错误,但结果将会出现乱码,如图所示:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南桃shine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值