我写了以下代码来从资源目录读取文件:
val filePath = MyClass.getClass.getResource("/myFile.csv")
val file = filePath.getFile
println(file)
CSVReader.open(file)
我得到的结果大致如下:
file:/path/to/project/my_module/src/main/resources/my_module-assembly-0.1.jar!/myFile.csv
Exception in thread "main" java.io.FileNotFoundException: file:/path/to/project/my_module/src/main/resources/my_module-assembly-0.1.jar!/myFile.csv (No such file or directory)
如果我在IDE(Intellij)中运行相同的代码,没有问题,控制台打印的路径为:
/path/to/project/my_module/target/scala-2.11/classes/myFile.csv
提供信息,这是一个由几个模块组成的多构建项目,使用sbt assembly
构建jar包。
Source
类上的fromResource
方法,可以读取资源的内容-在我看来,您可以更新答案,使用它代替getClass.getResourceAsStream
,因为后者更适用于Java。 - Luis Miguel Mejía SuárezCSVReader
API的外观,可能无法从ScalaBufferedSource
中读取数据。 - Alonso Dominguez