java在linux读取目录失败,Java读取properties时路径注意问题

先来看看建立的测试工程目录

ac02d8f7f118e60a23e2c257d2a2e906.gif

属性文件我们放在包test下,当然了,一般在实际开发过程中不建议这样做,建立把属性文件放在src目录下,现在放在包下主要是便于了解路径的问题。

下面来看一段读取属性文件的代码,属性文件配置了一个类Hello的K-V键值,我们要从中读取并加载到内存中来。

ReadProperties.properties

v=com.luhy.test.Hello

Hello类:

package com.luhy.test;

public class Hello {

public void run(){

System.out.println("Hello");

}

}

ReadProperties.java

package com.luhy.test;

import java.util.Properties;

public class ReadProperties {

public static void main(String[] args) throws Exception{

String filename = "com/luhy/test/ReadProperties.properties";

Properties props = new Properties();

props.load(ReadProperties.class.getClassLoader().getResourceAsStream(filename));

String h = props.getProperty("v");

Object o = Class.forName(h).newInstance();

Hello hello = (Hello)o;

hello.run();

}

}

执行完打印输出:

Hello

下面再来看一下编译后的bin目录

d690c62fd3d6de42c681d02411e983c2.gif

可见编译后属性文件被自动放到相应的包内,当然了,这里的bin相当于源码中的src,实际开发中一般放在此src目录下,这样在发布项目时就不用折腾了。

说明:

1、props.load(ReadProperties.class.getClassLoader().getResourceAsStream(filename));意思是获得从Properties类获得类加载器(类加载器主要有四种,分别加载不同类型的类,加载只是把class文件放进内存,并没有产生对象),并把指定文件转化为流。这一步,有很多新手,直接往load()里填文件名或具体文件路径名,程序运行时会报错找不到指定路径。所以,一定要注意这点。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值