Java读取properties时路径注意问题


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

 

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

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

Java 8 中 HashMap 的性能提升

Java 8 的 Nashorn 引擎

Java 8简明教程

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目录

 

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

说明:

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

本文永久更新链接地址:

相关内容

    暂无相关文章