Properties概述

java.util.Properties类 继承于 Hashtable ,来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时,System.getProperties 方法就是返回一个 Properties对象Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。Properties集合是一个唯一和IO流相结合的集合。可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储。可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用。属性列表中每个键及其对应值都是一个字符串。Properties集合是一个双列集合,key和value默认都是字符串。

构造方法

  • public Properties() :创建一个空的属性列表。

基本的存储方法

  • public Object setProperty(String key, String value) : 保存一对属性。底层就是调用 Hashtable 的方法 put。
  • public String getProperty(String key) :使用此属性列表中指定的键搜索属性值。此方法相当于Map集合中的get(key)方法
  • public Set stringPropertyNames() :所有键的名称的集合。此方法相当于Map集合中的keySet方法

与流相关的方法

Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储

  • void store(OutputStream out, String comments)
  • void store(Writer writer, String comments)

方法参数详解:

  • OutputStream out:字节输出流,不能写入中文,乱码。
  • Writer writer:字符输出流,可以写中文。一个中文就是一个字节
  • String comments:注释,用来解释说明保存的文件是做什么用的。不能使用中文,会产生乱码,默认是Unicode编码。一般使用""空字符串

使用步骤:

  1. 创建Properties集合对象,添加数据
  2. 创建字节输出流/字符输出流对象,构造方法中绑定要输出的目的地
  3. 使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储
  4. 释放资源

代码举例

package demo05;

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

public class Demo01Properties {
    public static void main(String[] args) throws IOException {
        //1.创建Properties集合对象,添加数据
        Properties prop = new Properties();
        prop.setProperty("赵丽颖", "168");
        prop.setProperty("迪丽热巴", "165");
        prop.setProperty("古力娜扎", "160");

        //2.创建字节输出流/字符输出流对象,构造方法中绑定要输出的目的地
        FileWriter fw = new FileWriter("day20\\prop.txt");

        //3.使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储
        prop.store(fw, "save data");

        //4.释放资源
        fw.close();

    }
}

Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用

  • void load(InputStream inStream)
  • void load(Reader reader)

方法参数详解:

  • InputStream inStream:字节输入流,不能读取含有中文的键值对
  • Reader reader:字符输入流,能读取含有中文的键值对

使用步骤:

  1. 创建Properties集合对象
  2. 使用Properties集合对象中的方法load读取保存键值对的文件
  3. 遍历Properties集合

注意:

  • 存储键值对的文件中,键与值默认的连接符号可以使用=,空格(其他符号)
  • 存储键值对的文件中,可以使用#进行注释,被注释的键值对不会再被读取
  • 存储键值对的文件中,键与值默认都是字符串,不用再加引号

代码举例

package demo05;

import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;

public class Demo02Properties {
    public static void main(String[] args) throws IOException {
        //1.创建Properties集合对象
        Properties prop;
        prop = new Properties();
        //2.使用Properties集合对象中的方法load读取保存键值对的文件
        prop.load(new FileReader("day20\\prop.txt"));
        //prop.load(new FileInputStream("09_IOAndProperties\\prop.txt"));
        //3.遍历Properties集合
        Set<String> set = prop.stringPropertyNames();
        for (String key : set) {
            String value = prop.getProperty(key);
            System.out.println(key + "=" + value);
        }
    }
}

Java之属性集(Properties类)的更多相关文章

  1. spring:使用<prop>标签为Java持久属性集注入值

    spring:使用<prop>标签为Java持久属性集注入值 使用 spring 提供的<prop>为Java持久属性集注入值,也就是向 java.util.Propertie ...

  2. java的属性只能在类里面 方法外面定义

    java的属性只能在类里面 方法外面定义 区别于python:python 既能在类里面(类属性) 又能在方法里面定义属性(实例属性)

  3. 【Java基础】Java中的持久属性集Properties

    Properties 类的介绍 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串.一个属性列表可包含另一个属性列 ...

  4. 字符流,字节流,属性集(Properties)

    字节输入流(InputStream) java.io.InputStream抽象类是表示字节输入流的所有类的超类.可以读取字节信息到内存中.它定义了字节输入流的基本共性功能方法. public voi ...

  5. 属性集 Properties

    5.1 概述 java.util.Properties 继承于 Hashtable ,来表示一个持久的属性集.它使用键值结构存储数据,每个键及其对应值都是一个字符串.该类也被许多Java类使用,比如获 ...

  6. java读取属性配置文件工具类

    import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * * 类: ProU ...

  7. Java读取属性配置文件-properties

    在项目开发中,我们难免将一些可变的参数放在程序以外,作为一个单独的文件,即配置文件,这样方便项目在不同的使用环境部署时.或者说需要不同时,可以通过简单配置这些程序以外的文件来修改程序里的变量. 常用的 ...

  8. java通过配置文件(Properties类)连接Oracle数据库代码示例

    import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java. ...

  9. 详解 Properties类

    (请观看本人博文--<详解 I/O流>) Properties类: 概念: Properties 类的对象 是 一个持久的属性集 Properties 可 保存在流中 或 从流中加载 属性 ...

随机推荐

  1. .net core 在服务端限制文件下载速度(传输速度)

    public IActionResult GetFile() { MyFileStream readStream = new MyFileStream(@"XXX/A.XX", F ...

  2. 如何正确的探索 Microsoft Ignite The Tour

    Microsoft Ignite The Tour 是一年一度微软为全球开发者.IT专家.安全专家以及数据专家提供的为期两天,包含众多核心产品的实践性技术培训.2019.12.10-2019.12.1 ...

  3. usb2.0高速视频采集之68013A寄存器配置说明

    任何的固件编程离不开与与原理图参考,图纸中所采用的是USB的Slave_fifo传输方式,具体配置与图纸对应即可. •USB_IFCLK:同步Slave_FIFO模式,输入频率范围5M-48M,在FP ...

  4. JS系列:js数据类型的转换

    数据类型的转换[基本数据类型]数字 number字符串 string布尔 boolean空 null未定义 undefined[引用数据类型]对象 object普通对象 {}数组对象 [](Array ...

  5. C#通过WMI获取硬件信息

    有时候需要得到硬件信息绑定用户登录 代码如下: private string GetProcessSerialNumber() { try { ManagementObjectCollection P ...

  6. 基于TCP协议之SSH

    #SSH客户端 import socket # 1. 创建符合TCp协议的手机 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # ...

  7. [译]C# 7系列,Part 9: ref structs ref结构

    原文:https://blogs.msdn.microsoft.com/mazhou/2018/03/02/c-7-series-part-9-ref-structs/ 背景 在之前的文章中,我解释了 ...

  8. 面向对象的进阶(item系列,__new__,__hash__,__eq__)

      面向对象的进阶(item系列,__new__,__hash__,__eq__) 一.item系列 getitem.setitem.delitem(操作过程达到的结果其实就是增删改查) class ...

  9. Android binder流程简图

    前段时间因为一个bug,研究了一下android binder的大概流程,方便自己理解画了一个框图. 粗点线箭头是继承关系,细实线箭头是调用关系.

  10. ShowDoc速记

    编写文档好工具showdoc部署 参考:https://www.showdoc.cc/ 一定要看,一定要用卷,丢失数据的痛苦,痛何如哉. https://www.cnblogs.com/harrych ...