Java 文件路径-相对路径
我有一个maven项目,作为我需求的一部分,我需要从测试类中读取一个文件,该文件位于测试文件夹中的一个目录中 我的项目层次结构如下Java 文件路径-相对路径,java,file,jmeter,Java,File,Jmeter,我有一个maven项目,作为我需求的一部分,我需要从测试类中读取一个文件,该文件位于测试文件夹中的一个目录中 我的项目层次结构如下 src --test ---java --org --sample --- MyTestClass.java ---jmeter ---load_data.csv 在MyTestClass.
src
--test
---java
--org
--sample
--- MyTestClass.java
---jmeter
---load_data.csv
在MyTestClass.java中,我需要读取load_data.csv。到目前为止,我对File和Path的测试还没有结果
file.exists()总是给我false…我怎样才能找到文件并读取它
关于在
src/test/resources/
中添加您的load_data.csv
并相应地查询假设您的项目的根是src
的父级,那么您的路径应该是:
Paths.get("src", "test", "jmeter", "load_data.csv")
问题有两个方面。如何从Maven访问文件,其次如何从类访问文件。我假设您的maven构建失败了,因为由于缺少文件,它没有通过测试 快速和肮脏的方式: 输入完整路径。根据操作系统的不同,导航到终端中的文件并键入(OSX和nix):“pwd”,然后在新文件中复制并粘贴完整路径() Windows:回显%cd% 或 更好的方法: 您可能应该在参考资料中添加该文件。按照惯例,您希望将资源放在该文件夹中。它使得在类内部访问变得很容易,也就是class.getResource(“somefile.txt”),而无需担心相对路径。 当您分发程序时,它也会被添加到您的jar中。 文件结构: 约定src->main->resources->load_data.csv 在您的例子中,src->test->resources->load_data.csv 现在,如何从maven引用资源。在下面的构建过程中添加资源的困难方法来自Maven文档
复制资源
验证
复制资源
${basedir}/目标/额外资源
src/非打包资源
符合事实的
如果不希望testResources成为主发行版的一部分,则需要添加一个测试概要文件,并将其从主阶段/构建中排除。更多文档尝试将以下代码添加到
MyTestClass
中,以便在运行测试时可以看到当前工作目录是什么:System.out.println(“工作目录:”+path.get(“”.toabsolutionPath())代码>然后您应该能够看到如何构建完整路径。通过在构建工具中将其指定为资源目录,将其添加到类路径中。然后像加载任何其他类路径资源一样加载它。为什么不将多个值传递给路径。get()
?例如,path.get(“src”、“test”、“jmeter”、“load_data.csv”)
或使用其中一种方法?使用这两种方法中的任何一种,您都不必担心分隔符。此外,您可能希望包括您假设项目的根目录是运行时的当前工作目录。
<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>