我的Scala应用程序使用了Tototoshi的ScalaCSV库,因此我需要打开一个放在/src/main/resources/data.csv
下的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文件的方式访问此文件的内容?
答案 0 :(得分:3)
当你打包它时,csv文件将驻留在jar存档中;对?然后,您无法直接将其作为文件访问。相反,你需要要求一个流:
val stream = getClass.getResourceAsStream("/data.csv")
可能您需要将流包装在InputStreamReader中,以便CSVReader接受它:
val reader = new InputStreamReader(stream)
CSVReader.open(reader)