java - 从同一目录中的文件读取

标签 java file-io groovy spock bazel

我正在使用 Groovy Spock 框架、IntelliJ 和 Bazel 构建系统编写测试。目标是从与测试文件 Model3dImporterSpec.groovy 位于同一目录的 LamborghiniAventador.obj 读取测试数据。

我收到一个java.io.FileNotFoundException

def "reading from test file in same directory"() {
  given: "some stuff"
     //do some stuff here

  when: "reading from test file"
    def file = Paths.get("LamborghiniAventador.obj").normalize().toFile()   
    def byteArray = getFileAsByteStream(file.getAbsolutePath())

  then: "file should be read and byte array should not be null"
    byteArray != null;        
}

private static byte[] getFileAsByteStream(String pathToFile) {
  return new File(pathToFile).text.getBytes()
}

当我在命令行上搜索时,我的文件的路径是:~/Dev/Master/src/test/java/com/censored/api/editor/model3dparsers/LamborghiniAventador.obj

我可以成功地读取桌面上的文件,但是一旦我在项目空间中重新定位该文件,事情就会停止工作。

Directory Tree

如何从测试文件中读取测试数据,其中测试数据文件和测试文件位于同一目录中。这在 Java (Eclipse) 中是一项简单的任务。我已经查看了大量其他 Stackoverflow 问题,但无济于事,所以我认为我在这里严重缺乏理解。除了答案之外,我还希望得到解释。

已编辑以澄清

最佳答案

假设规范Model3dImporterSpec.groovy位于:

src/test/groovy/org/whatever

LamborghiniAventador.obj 文件应位于:

src/test/resources/org/whatever
为什么?资源文件应与源文件放在同一目录下。

然后加载文件使用:

getClass().classLoader.getResourceAsStream('LamborghiniAventador.obj')

关于java - 从同一目录中的文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34029202/

相关文章:

groovy - 为什么 Groovy 闭包不能访问注入(inject)的类成员?

date - 如何创建按日期字段的月份分组的条件 + Grails

java - 如何排除 Apache Commons Betwixt 映射的对象?

java - Servlet 以 Base64 格式意外返回响应

使用文件处理复制文本文件的内容

java - 如何确定 Grails 中的父类

Centos 5 中 Java 服务器启动时挂起

Java 使用 Comparable 接口(interface)

c++ - 文件是否保证在 ofstream::close() 返回后可以立即打开以供读取?

mysql - 执行 LOAD DATA LOCAL INFILE 时获取 mysql 错误代码 : 1265. 数据被列截断