码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java-API简析_java.util.Properties类(基于 Latest JDK)(浅析源码)


    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
    https://blog.csdn.net/m0_69908381/article/details/133935306
    出自【进步*于辰的博客】

    文章目录

    • 1、概述
    • 2、字段摘要
      • 2.1 protected Properties defaults
    • 3、构造方法摘要
      • 3.1 null
      • 3.2 Properties defaults
    • 4、方法摘要
      • 4.1 String getProperty(String key)
      • 4.2 String getProperty(String key, String defaultValue)
      • 4.3 void list(PrintStream out)
      • 4.4 void list(PrintWriter out)
      • 4.5 void load(InputStream inStream)
      • 4.6 void loadFromXML(InputStream in)
      • 4.7 Enumeration propertyNames()
      • 4.8 ~~void save(OutputStream out, String comments)~~
      • 4.9 Object setProperty(String key, String value)
      • 4.10 void store(OutputStream out, String comments)
      • 4.11 void storeToXML(OutputStream os, String comment)
      • 4.12 void storeToXML(OutputStream os, String comment, String encoding)
    • 最后

    1、概述

    继承关系:

    • java.lang.Object
      • java.util.Dictionary
        • java.util.Hashtable
          • java.util.Properties

    所有已实现的接口:
    Serializable、Cloneable、Map

    直接已知子类:
    Provider


    public class Properties extends Hashtable

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

    一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。

    因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put() 和 putAll()。但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty() 。如果在“有危险”的 Properties 对象(即包含非 String 的键或值)上调用 store() 或 save() ,则该调用将失败。

    load() 和 store() 按下面所指定的、简单的面向行的格式加载和存储属性。此格式使用 ISO 8859-1 字符编码。可以使用 U n i c o d e 转义符 \color{green}{Unicode 转义符} Unicode转义符来编写此编码中无法直接表示的字符;转义序列中只允许单个 ‘u’ 字符。可使用 n a t i v e 2 a s c i i 工具 \color{blue}{native2ascii 工具} native2ascii工具对属性文件和其他字符编码进行相互转换。

    loadFromXML(InputStream) 和 storeToXML(OutputStream, String, String) 按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明:

    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    
    • 1

    注意,导入或导出属性时不访问系统 URI (http://java.sun.com/dtd/properties.dtd);该系统 URI 仅作为一个唯一标识 DTD 的字符串:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- DTD for properties -->
    
    <!ELEMENT properties ( comment?, entry* ) >
    
    <!ATTLIST properties version CDATA #FIXED "1.0">
    
    <!ELEMENT comment (#PCDATA) >
    
    <!ELEMENT entry (#PCDATA) >
    
    <!ATTLIST entry key CDATA #REQUIRED>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    从以下版本开始:
    JDK1.0
    另请参见:
    native2ascii tool for Solaris、native2ascii tool for Windows、序列化表格

    2、字段摘要

    2.1 protected Properties defaults

    一个属性列表,包含属性列表中所有未找到值的键的默认值。

    示例:
    1、获取系统配置/属性的defaults。

    Class z1 = Class.forName("java.util.Properties");
    Field f1 = z1.getDeclaredField("defaults");
    f1.setAccessible(true);
    Properties p = (Properties) f1.get(System.getProperties());// null
    
    • 1
    • 2
    • 3
    • 4

    2、将系统配置/属性作为defaults并获取。

    Class z1 = Class.forName("java.util.Properties");
    Field f1 = z1.getDeclaredField("defaults");
    f1.setAccessible(true);
    
    Properties p = new Properties(System.getProperties());
    
    p = (Properties) f1.get(p);
    for (Map.Entry<Object, Object> entry : p.entrySet())
        sout entry;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    打印结果同getProperties()中的示例,见System类的第2.8项。

    综上示例,我暂不知此字段的具体作用。

    3、构造方法摘要

    3.1 null

    创建一个无默认值的空属性列表。
    说明:
    先看源码。
    在这里插入图片描述
    底层调用下1项。

    3.2 Properties defaults

    创建一个带有指定默认值的空属性列表。
    说明:
    看源码。
    在这里插入图片描述

    4、方法摘要

    4.1 String getProperty(String key)

    用指定的键在此属性列表中搜索属性。
    说明:
    先看源码。
    在这里插入图片描述
    关于get(),见父类的第3.9项;关于defaults,见第2.1项;关于getProperty(),是一次递归。

    4.2 String getProperty(String key, String defaultValue)

    用指定的键在属性列表中搜索属性。
    说明:
    先看源码。
    在这里插入图片描述
    关于getProperty(),见上1项。

    4.3 void list(PrintStream out)

    将属性列表输出到指定的输出流。

    4.4 void list(PrintWriter out)

    将属性列表输出到指定的输出流。

    4.5 void load(InputStream inStream)

    从输入流中读取属性列表(键和元素对)。

    4.6 void loadFromXML(InputStream in)

    将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。

    4.7 Enumeration propertyNames()

    返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。

    4.8 void save(OutputStream out, String comments)

    已过时。 如果在保存属性列表时发生 I/O 错误,则此方法不抛出 IOException。保存属性列表的首选方法是通过 store(OutputStream out, String comments) 方法或 storeToXML(OutputStream os, String comment) 来进行。

    4.9 Object setProperty(String key, String value)

    调用 Hashtable 的方法 put。

    4.10 void store(OutputStream out, String comments)

    以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。

    4.11 void storeToXML(OutputStream os, String comment)

    发出一个表示此表中包含的所有属性的 XML 文档。

    4.12 void storeToXML(OutputStream os, String comment, String encoding)

    使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。

    最后

    如果大家需要Java-API文档,我上传了《Java-API文档-包含5/8/11三个版本》。


    本文暂缓更新。

  • 相关阅读:
    恒峰-智能高压森林应急消防泵:安全护林新利器
    租用香港服务器您需要知道的5件事
    正确使用docker compose安装Kafka并运行示例
    【Linux】线程
    制作长图海报的详细指南,制作长图海报的5个步骤
    C语言、Go、Node.js、Nim后端Web代码性能对比
    ESP32_HTTP请求获取天气,含json解析
    【周赛复盘】力扣第 312 场单周赛
    gitlab 离线安装问题解决:NOKEY,signature check fail
    【AI赋能医学】基于深度学习和HRV特征的多类别心电图分类
  • 原文地址:https://blog.csdn.net/m0_69908381/article/details/133935306
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号