A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/Java/下, 那么java文件夹和resources文件夹在运行时就是classpath的真实位置,如果
有一个文件位于 src/main/resources/test.txt
有一个类位于 src/main/java/com/qunar/MyClass.java
FILE_NAME = "test.txt"
通过如下代码
MyClass.class.getClassLoder().getResource(FILE_NAME).getPath();
可以直接获取文件路径
而classpath可以通过如下代码获取
MyClass.class.getClassLoder().getResource("").getPath();
还有一种方法可以通过当前类的加载路径使用相对路径来获取资源地址
MyClass.class.getResource(FILE_NAME).getPath()
那么这种就会有问题,因为此时的路径是相对于MyClass这个类在运行时路径而言的,test.txt和MyClass并不在一个层级,因为MyClass之前还有两个包
可以如下解决
MyClass.class.getResource(File.separator + "FILE_NAME").getPath(); // 这种方法相当于使用绝对运行时路径
MyClass.class.getResource(".." + File.separator + ".." + File.separator + FILE_NAME).getPath(); // 这种方法相当于使用相对MyClass的运行时路径


properties文件读取pom.xml中定义的变量
***我的properties的一些列文件在该项目下的properties文件夹中
在pom加上如下代码:

      <resources>
           <resource>
                <directory>${project.basedir}/properties</directory>
                <filtering>true</filtering>
                <includes>
                    <include>*.properties</include>
                </includes>
            </resource>
        </resources>

properties中就可以直接应用pom定义的变量,引用的方法version=${pom中定义的变量名}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马