[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");
这些方式在平常较少接触到,但后面开发项目时难免会再次用上,仍需记下来方便以后查阅。