Java的Properties属性集、获取项目路径的3种方式(干货满满)

2023-11-14

 属性集介绍:

        集合家族中有个成员java.util.Properties ,它继承于HashtableProperties是使用键值结构存储数据的,但它最大的特点是具有持久化功能。(持久化:内存—>硬盘,持久化的过程必须依赖于IO流)

        对IO流不太理解的可以看看小编之前写过的文章(链接在下面)

        (17条消息) Java细节问题归纳与总结(五)_淡淡的粉红色的博客-CSDN博客

        运用键值对存储数据: 

 

常用API:

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

  • public Object setProperty(String key, String value) : 保存一对属性。

  • public String getProperty(String key) :使用此属性列表中指定的键搜索属性值。

  • public Set<String> stringPropertyNames() :所有键的名称的集合。

  • public void load(InputStream inStream): 从字节输入流中读取键值对数据。

  • public void store(OutputStream out,String comments):从字节输入流中存储键值对数据。

属性集的用法: 

1、将数据保存到.properties文件中

    public static void main(String[] args) throws IOException {
        //创建对象
        Properties properties = new Properties();

        //添加数据
        properties.put("name","陈冠希");
        properties.put("age","18");

        //修改数据
        properties.put("name","太阳");

        //获取数据
//        System.out.println(properties.getProperty("name"));

        //删除数据
//        properties.remove("name");
//        System.out.println(properties);

        //持久化
        //获取当前Demo1类所在的目录+system.properties
        String path = System.getProperty("user.dir") + "/20230207-异常与io-day02/src/com/bailiban/demo6/system.properties";
        FileOutputStream out = new FileOutputStream(path);
        properties.store(out,"");
    }

运行结果:

 

 注意:在获取当前Demo1类所在的目录+system.properties的时候,拼接目录时需要加上模块名/20230207-异常与io-day02,因为idea是单项目、多模块的,我是在模块下编写代码的,所以还需要加上模块名,否在会出现运行报错(系统找不到指定的路径)。

2、从.properties中读取数据

    /**
     * 通过properties对象读取properties文件中的数据
     * @param args
     */
    public static void main(String[] args) throws IOException {
        //创建对象
        Properties properties = new Properties();

        //获取当前目录中的system.properties文件
        InputStream inputStream = Demo2.class.getResourceAsStream("system.properties");

        //从I流中读取数据到properties对象中
        properties.load(inputStream);

        System.out.println(properties);
    }

 运行结果:

 

 获取项目路径的3种方式:

1、方式一

public static void main(String[] args) {
        //方式一:获取Demo3的类文件所在目录中的system.properties
        String path = Demo3.class.getResource("system.properties").getPath();
        System.out.println(path);
}

 运行结果:

注意:此方式只能获取.class文件,不能获取.java文件,因为获取的是bin目录下的,不是src目录下的。 

当文件处于Demo3的类文件的父类中时,可以使用“../”返回上一级目录,同样也是使用第一种方式

 

String path = Demo3.class.getResource("../123.txt").getPath();
System.out.println(path);

 2、方式二

使用类加载器(getClassLoader()),从项目的根路径开始查找(src路径开始),直接写文件名即可。

//方式二:使用类加载器,从项目的根路径开始查找(src路径开始)
String path = Demo3.class.getClassLoader().getResource("123.txt").getPath();
System.out.println(path);

运行结果:

 3、方式三

上两种方式获取的都是bin目录下的路径,如果要获取src目录下的路径,需要使用方法三

//到右括号)位置路径是项目的根路径,不跟bin,也不跟src
//要获取文件的具体位置,需要进行路径的字符串拼接
String path = System.getProperty("user.dir") + "/20230207-异常与io-day02/src/123.txt"; //"user.dir"是固定写法
System.out.println(path);

运行结果:

 

注意:以上三种获取项目路径的方式必须100%掌握,在以后的学习中会经常用到。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java的Properties属性集、获取项目路径的3种方式(干货满满) 的相关文章

随机推荐

  • Vijava 学习笔记之VirtualMachine(基础配置信息{VirtualMachineConfigSummary})

    Vijava 代码 package com vmware client import com vmware util Session import com vmware vim25 VirtualMachineConfigSummary i
  • Docker搭建kafka集群

    Docker搭建kafka集群 集群规划 镜像版本 kafka为什么需要依赖zookeeper 创建docker网络 搭建zk集群 新建文件docker compose zk yml 启动 搭建kafka集群 新建三个挂载文件 挂载原因 挂
  • TIA博途S7-1200学习笔记——数据类型

    目录 一 概述 二 基本数据类型 1 二进制数 1 1 BOOL 位 1 2 BYTE 1 3 WORD 1 4 DWORD 1 5 LWORD 2 整数 2 1 SINT 2 2 USINT 2 3 INT 2 4 UINT 2 5 DI
  • 注解@TableName、@TableField

    目录 TableName value 当数据库名与实体类名不一致或不符合驼峰命名时 需要在此注解指定表名 不加这个注解默认将实体类的小写形式在db中寻找 TableField 字段注解 该注解用于标识非主键的字段 将数据库列与 JavaBe
  • 幂函数与指数函数的区别

    a表示底数 n表示指数 a n叫做幂 幂就是一个数和它自己相乘的积 二个乘是二次幂 三个乘是三次幂 四个乘是四次幂 象三 五这样的幂是奇次幂 二 四是偶次幂负数乘负数是正数 负数乘正数是负 幂函数与指数函数的区别 指数函数 自变量 x 在指
  • 关于欧拉角的问题

    一 简单介绍 自己主要做一个知识记录 想着学了还是要写点东西的 首先我们可以把欧拉角看成是描述方位的一种方法 我们可以用欧拉角来表示旋转 也可以用四元数 以及用矩阵来表示旋转 欧拉角是一种常用的描述方位的方法 在这里简单的介绍下方向和方位的
  • 阿里巴巴“三板斧”管理到底是什么?

    阿里巴巴从最初的以马老师为首的18罗汉创始员工 发展至今拥有4万员工 从杭州的湖畔花园起家 到去美国纽约证券交易所上市敲钟 阿里巴巴如何走到现在 它背后的管理机制是怎样的 我们到底向它学什么 阿里巴巴管理总纲 阿里巴巴九板斧 中层能力三板斧
  • 哈希表与树的介绍

    前言 该篇文章 主要带我们认识什么哈希表和树 为我们在研究各个数据结构的实现及扩展算法 有个基本的认识 哈希表 特点 数组 寻址容易 数据连续存储空间 链表 插入与删除容易 放在堆内存中对象 存储并不连续 哈希表 寻址容易 插入删除也容易的
  • 多模态机器翻译

    摘录自 机器翻译 基础与模型 东北大学 文章目录 1 背景 2 机器翻译需要更多的上下文 3 图像翻译 4 基于图像增强的文本翻译 4 1 基于特征融合的方法 4 2 基于联合模型的方法 5 参考文献 1 背景 基于上下文的翻译是机器翻译的
  • js实例学习笔记

  • Elasticsearch ILM (index lifecycle management): logstash vs fluentd

    ILM Elasticsearch在升级到7 x之后 推出了一项新功能ILM 用于管理被大家诟病已久的index lifecycle management问题 只需要在kibana内简单配置 就可以管理以前我们不得不设置cronjob去删除
  • C#比较运算符及解析

    文章目录 博主写作不容易 孩子需要您鼓励 万水千山总是情 先点个赞行不行 比较运算符得出的结果是逻辑型 bool 即 True 或 False 比较运算符又称关系运算符 我们可以把它理解为一种判断 判断的结果是真或者是假 关系表达式的返回值
  • Android 权限大全-转载

    Android 权限大全 转自博客园 博客园链接 Key android permission ACCESS CHECKIN PROPERTIES Title 访问检入属性 Memo 允许对检入服务上传的属性进行读 写访问 普通应用程序不能
  • 初入HTML

    1 HTML语言用来做什么 html语言专门用来描述网页 它属于一种标记语言 它是由一组标签构成 2 HTML元素 一个HTML元素是包含了开始标签和结束标签 当然 还有一些是单标签 例如 p 段落标签 p 双标签 br 换行标签 单标签
  • openlayers地图坐标coordinate转换为屏幕像素坐标pixel

    openlayers地图坐标coordinate转换为屏幕像素坐标pixel 网上查资料试了很多人的方法 需要各种转换但没成功 后来发现openlayers的map对象自带该方法 记录下来 希望帮助到大家 方法说明 获取坐标的像素坐标 这将
  • 随机森林补充缺失值

    导入必要的库 import numpy as np import pandas as pd from sklearn ensemble import RandomForestRegressor 读取数据 data data all1 找出所
  • 3D数学基础——向量与矩阵变换

    向量相乘 1 点乘 两个向量的点乘等于他们的数乘结果乘以两个向量之间家教的余弦值 v k v k cos cos v k v k 通过点乘的结果计算两个非单位向量的夹角 2 叉乘 叉乘只在3d空间中有定义 他需要两个不平行向量作为输入 生成
  • nvm install node没反应_LINUX使用nvm安装node,nrm的使用

    为什么要使用nvm来安装node 我们在开发过程中 特别是协作开发时 通常会对具体的node的版本有限制 我们使用nvm可以轻松解决这个问题 nvm安装node的好处就是可以切换node版本 用起来方便 所以介绍下如何使用nvm安装node
  • 【Vs Code 学习笔记】

    Vs Code 远程连接服务器 详细教程 默认你已经安装好了Vs Code 1 如果没有请参考官网链接 https code visualstudio com 直接安装就可以了 2 打开VsCode 你可以看到如下界面 然后在按照如下操作下
  • Java的Properties属性集、获取项目路径的3种方式(干货满满)

    属性集介绍 集合家族中有个成员java util Properties 它继承于Hashtable Properties是使用键值结构存储数据的 但它最大的特点是具有持久化功能 持久化 内存 gt 硬盘 持久化的过程必须依赖于IO流 对IO