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

 属性集介绍:

        集合家族中有个成员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%掌握,在以后的学习中会经常用到。

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值