在Scala中从JAR加载文件

时间:2012-04-20 02:08:34

标签: scala jar

我有以下代码结构:

Projects/
     classes/
         performance/AcPerformance.class
         resources/
                  Aircraft/
                          allAircraft.txt

我在JAR中有classes文件夹的内容,而我的AcPerformance scala代码正在尝试读取Aircraft文件夹文本文件的内容。我的代码:

val AircraftPerf = getClass.getResource("resources/Aircraft").getFile
val dataDir = new File(AircraftPerf)
val acFile = new File(dataDir, "allAircraft.txt")

for (line <- linesFromResource(acFile)) {
  // read in lines
}

当我尝试运行代码时,出现以下错误:

引起:java.io.FileNotFoundException:C:\ Projects \ file:\ C:\ Projects \ libraries \ aircraft.jar!\ Aircraft \ allAircraft.txt(文件名,目录名或卷标语法不正确)

这是读取JAR内容的正确方法吗?谢谢!

1 个答案:

答案 0 :(得分:10)

不,URL的{​​{1}}不会在这里做你想要的 - 它给你的路径不是你可以在{{1}中使用的文件系统路径构造函数。您最好使用getFile和资源的完整路径:

File

请注意,您还需要在路径前添加getResourceAsStream以使其绝对 - 在当前版本中,您正在val in = getClass.getResourceAsStream("/resources/Aircraft/allAircraft.txt") 下查找/目录。