[Maven工程]读取src/main/resources目录的

2019-12-06  本文已影响0人  隐藏的记号

今天,我要手动去解析resources目录下的app.properties文件。第一步骤当然是获取该文件的对象信息。

我一开始以为resources目录就是项目根目录,直接提供文件名就足够。结果报出FileNotFoundException

Properties appProperties =  new  Properties();
appProperties.load(  new  FileReader( "app.properties" ) );

仔细思考了一下,这样查找的目录是一个相对目录,它相对于当前的工程项目。

目录是:

项目目录.png

确实也是不能找到app.properties文件,报这个异常是应该的. 那么正常要找到文件的情况应该是通过此路径才能定位到:src/main/resources

文件定位到了,但这种方式其实不可取。咱这开发时候,的确能够顺利找到文件,但是在maven打成jar包后,再执行,这里文件定位还能再定位到吗?就不可以了吧。

maven编译完成后,所有的源文件,包括resources目录下的文件,默认都会放在target/classes下面,这个路径其实就是classPath的路径。

所以,在resources 根目录下的配置文件其实就是 classPath的路径。

在Java中有特定获取classPath的方式,我们可以获取到指定path下的文件路径,甚至是直接的文件输入流对象。


// 获取classpath下资源的URL对象
java.net.URL appURL = App.class.getClassLoader().getResource("app.properties");
System.out.println(appURL.getPath());  // 输出该文件的绝对路径

// 获取classpath下资源的InputStream对象
InputStream propertiesInputStream = App.class.getClassLoader().getResourceAsStream("app.properties");

这些方式在平常较少接触到,但后面开发项目时难免会再次用上,仍需记下来方便以后查阅。

上一篇下一篇

猜你喜欢

热点阅读