2

我的 Scala 应用程序使用了 Tototoshi 的 ScalaCSV 库,因此我需要打开一个放在/src/main/resources/data.csv. 我以这种方式访问​​它:

val file = getClass.getResource("/data.csv").getFile
CSVReader.open(file)
...

当我在 IntellijIDEA 下运行我的应用程序时,此设置运行良好,但一旦我将其打包,它就会停止工作,sbt-assemby而是出现此错误:

file:/home/.../target/scala-2.11/projectx-assembly-0.0.1.jar!/data.csv (No such file or directory)

我怎样才能访问这个文件的内容,它可以同时从 IDE 和组装的 jar 文件工作?

4

1 回答 1

4

当您打包它时,csv 文件将驻留在 jar 存档中;正确的?然后你不能直接作为文件访问它。相反,您需要请求一个流:

val stream = getClass.getResourceAsStream("/data.csv")

可能您需要将流包装在 InputStreamReader 中,以便 CSVReader 接受它:

val reader = new InputStreamReader(stream)
CSVReader.open(reader)
于 2015-02-02T11:50:55.647 回答