首页 > 编程语言 >Java 类之 java.util.Properties

Java 类之 java.util.Properties

时间:2023-12-14 11:04:14浏览次数:36  
标签:Java java Properties util Hashtable io import properties


Java 类之 java.util.Properties


文章目录

  • Java 类之 java.util.Properties
  • 一、简介
  • 二、主要功能
  • 1、存储键值对
  • 2、读取文件与属性
  • 代码示例
  • 运行结果
  • 截图
  • 3、设置属性并保存文件
  • 代码示例
  • 结果截图
  • 4、遍历属性
  • 代码示例
  • 运行结果


关联博客:《基于 Java 列举和说明常用的外部化配置的实现方式》

一、简介

java.util.Properties 是 Java 中用于处理属性文件的一个类。

属性文件通常用于存储配置信息,例如应用程序的设置和参数。Properties 类提供了一种方便的方式来管理键值对,其中键和值都是字符串类型

它本质上是一个 Hashtable ,因为 Hashtable 已经过时了,所以了解即可!

问题:Hashtable 是不是有点过时了?

ChatGPT 回答:是的,Hashtable 类在Java中被认为有点过时。虽然它是一个实现了基本的哈希表功能的类,但在 Java Collections Framework 中引入了更先进、更强大的替代类,如 HashMap

HashMapHashtable 的轻量级替代品,它具有相似的功能,但是在性能上更优越。HashMap 允许空键和空值,而 Hashtable 不允许。此外,Hashtable 的方法都是同步的,这意味着在多线程环境下,对 Hashtable 的操作是线程安全的。然而,这也带来了一些性能开销。

如果你在单线程环境下工作,并且不需要线程安全性,那么使用 HashMap 更为推荐。如果需要线程安全性,则可以考虑使用 ConcurrentHashMap 或者通过 Collections.synchronizedMap 方法包装 HashMap

总体来说,在现代 Java 开发中,更常见的做法是使用 HashMap 或其他相关的集合类,而不是直接使用 Hashtable

public class Properties extends Hashtable<Object,Object>

二、主要功能

1、存储键值对

Properties 对象可以存储键值对,其中键和值都是字符串。这些键值对通常以文本文件的形式存储,可以由人类读取和编辑

2、读取文件与属性

代码示例

package com.zibo;

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

public class Main {

    public static void main(String[] args) {
        // 例子:读取属性文件
        Properties properties = new Properties();
        // config.properties 文件放在根目录下!可能存在中文乱码的问题,这里着重演示读取的过程,不做处理
        try (InputStream input = new FileInputStream("config.properties")) {
            properties.load(input);
            System.out.println(properties.getProperty("name"));
            System.out.println(properties.getProperty("age"));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

运行结果

zibo
27

截图

Java 类之 java.util.Properties_python

3、设置属性并保存文件

会创建新文件!如果文件名相同会覆盖!

代码示例

package com.zibo;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

public class Main {

    public static void main(String[] args) {
        Properties properties = new Properties();
        try (
            OutputStream out = new FileOutputStream("config.properties")
        ) {
            // 修改属性
            properties.setProperty("name", "ZIBO");
            properties.setProperty("age", "18");
            // 保存属性到 config.properties 文件
            properties.store(out, "Set 'name' and 'age' value");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

结果截图

Java 类之 java.util.Properties_java_02

4、遍历属性

代码示例

package com.zibo;

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

public class Main {

    public static void main(String[] args) {
        // 例子:读取属性文件
        Properties properties = new Properties();
        // config.properties 文件放在根目录下!可能存在中文乱码的问题,这里着重演示读取的过程,不做处理
        try (InputStream input = new FileInputStream("config.properties")) {
            properties.load(input);
            // 遍历所有属性
            properties.forEach((key, value) -> System.out.println(key + " = " + value));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

运行结果

name = ZIBO
age = 18


标签:Java,java,Properties,util,Hashtable,io,import,properties
From: https://blog.51cto.com/u_13272819/8815687

相关文章

  • java写个爬虫抓取汽车之家车型配置参数
    前几天有个搞工程的表弟找我,问我什么车好,可以经常跑工地的,看上去又有面子。于是我挥动发财的小手,写一个爬虫程序,筛选并整理了一些数据,并附上下载的图片提供参考,看中了果断第二天提车到手。我是使用Java编写的爬虫程序,用于抓取汽车之家网站上的车型、车系、配置参数数据。以下是每行......
  • Java 大文件分片上传
    原理:前端通过js读取文件,并将大文件按照指定大小拆分成多个分片,并且计算每个分片的MD5值。前端将每个分片分别上传到后端,后端在接收到文件之后验证当前分片的MD5值是否与上传的MD5一致,待所有分片上传完成之后后端将多个分片合并成一个大文件,并校验该文件的MD5值是否与上传时传入的M......
  • 基于JavaWeb的电影推荐平台的设计与实现
     1.项目演示前端演示地址:http://96.8.117.232:8082/后端演示地址:http://96.8.117.232:8083/ (管理员账号:admin密码123456)访问慢是因为服务器是海外的,国内访问慢,便宜VPS凑合了2.项目介绍技术列表技术说明SpringBootWeb应用开发框架Vue3.xjava1.8my......
  • Java-研究HashMap的源码
    Java-研究HashMap的源码JDK版本:17类注释基于哈希表的Map接口实现。此实现提供了所有可选的映射操作,并允许null值和null键。(HashMap类大致相当于Hashtable,只不过它是不同步的并且允许null。)该类不保证映射的顺序;特别是,它不保证顺序随着时间的推移保持不变。此实现为基本操......
  • Java之Hashset的原理及解析
     4.数据结构4.1二叉树【理解】二叉树的特点二叉树中,任意一个节点的度要小于等于2节点:在树结构中,每一个元素称之为节点度:每一个节点的子节点数量称之为度二叉树结构图编辑4.2二叉查找树【理解】二叉查找树的特点二叉查找树,又称二叉排序树或者二叉搜索树每一个节点上最多有两......
  • springboot004旅游路线规划系统(Java毕业设计,附数据库和源码)
    第一章绪论1.1选题背景与研究意义随着社会的不断进步,在居民生活水平提高的同时,人们当前在生活的方方面面也越来越注重服务所带来的体验,随着近几年国家政策大力发展旅游业,旅游景点的建设越来也完善,旅游业的发展速度得到了显著的提升。各大旅行社、旅游景点都不断的推出新的活动计......
  • Java从入门到放弃(知识体系图谱)
    一、Java学习路线话不多说,先来一张劝退图!!!二、Java并发学习路线下面是一张关于Java并发编程的思维导图,大的方向可以分为三个部分:线程基础、理论基础、工具类JUC三、Java虚拟机一张关于JVM的思维导图,大的方向可以分为三个部分:字节码与类的加载、内存与垃圾回收、性能监......
  • 关于java的多态方法调用顺序的问题
    使用父类类型的引用指向子类的对象,该引用调用的师父类中定义的方法和变量,变量不能被重写(覆盖);如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;注意特殊情况,如果该父类引用所调用的方法参数列表未定义,就调用该父类的父类中查找,如果还没找到就强......
  • fusion accessR6本地挂载光驱的Java环境问题
    fusion access版本:R6外部操作环境:windows7准备制作的模版:windows7 旗舰版64 办公软件:office2010tools:ultraiso,firefox33,360万能网卡驱动本地挂载光驱的Java环境问题:安装完模板虚拟机后网卡无法识别,需要安装网卡驱动,由于没有IP地址,只能使用光驱本地挂载。解决方案:......
  • 使用java调用Python脚本
    通过使用java中的ProcessBuilder类,可以实现在java代码中调用外部的python代码的功能,以下为具体代码:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassJavaCallPython{publicstaticvoidmain(String[]args)......