文件路径-相对路径

时间:2018-07-01 16:19:10

标签: java file jmeter

我有一个maven项目,并且作为我的要求的一部分,我需要从Test类中读取文件,多数民众赞成在test文件夹内的目录之一中读取文件。

我的项目层次结构是这样的。

src
     --test
        ---java
             --org
                 --sample
                      --- MyTestClass.java
        ---jmeter
               ---load_data.csv

在MyTestClass.java中,我需要读取load_data.csv。到目前为止,我对File和Path的试用都未获得结果

file.exists()总是给我假...我如何找到该文件并读取它

致谢

3 个答案:

答案 0 :(得分:0)

假设项目的根是src的父项,那么您的路径应为:

Paths.get("src", "test", "jmeter", "load_data.csv")

答案 1 :(得分:0)

问题是2折。如何从Maven访问文件,第二如何从班级访问文件。我假设您的Maven构建失败,因为由于缺少文件而无法通过测试。

快速而肮脏的方式:

输入完整路径。根据操作系统的不同,导航至终端中的文件并键入(OSX和nix):“ pwd”,然后将完整路径复制并粘贴到新File()中 Windows:回显%cd% 要么 How to construct a relative path in Java from two absolute paths (or URLs)?

更好的方法: 您可能应该在资源中添加该文件。按照惯例,您要将资源放置在该文件夹中。它使您可以轻松地在类内部访问class.getResource(“ somefile.txt”),而无需担心相对路径。 当您分发程序时,它也会添加到您的jar中。 档案结构: 约定src-> main-> resources-> load_data.csv

在您的情况下src->测试->资源-> load_data.csv

现在如何从Maven引用资源。下面的构建过程中的困难方法是从Maven文档https://maven.apache.org/plugins/maven-resources-plugin中添加资源。

<executions>
      <execution>
        <id>copy-resources</id>
        <!-- here the phase you need -->
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
          <resources>          
            <resource>
              <directory>src/non-packaged-resources</directory>
              <filtering>true</filtering>
            </resource>
          </resources>              
        </configuration>            
      </execution>
    </executions>

如果您不希望testResources成为主发行版的一部分,则需要添加测试配置文件并将其从主阶段/构建中排除。更多文档https://maven.apache.org/plugins/maven-resources-plugin/testResources-mojo.html

答案 2 :(得分:-2)

load_data.csv中添加src/test/resources/并进行相应查询