【问题标题】:Loading files from JAR in Scala在 Scala 中从 JAR 加载文件
【发布时间】:2012-04-20 10:30:29
【问题描述】:

我的代码结构如下:

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 内容的正确方法吗?谢谢!

【问题讨论】:

    标签: scala jar


    【解决方案1】:

    不,URLgetFile 不会在这里做你想做的事——它给你的路径不是你可以在File 构造函数中使用的文件系统路径。最好使用 getResourceAsStream 和资源的完整路径:

    val in = getClass.getResourceAsStream("/resources/Aircraft/allAircraft.txt")
    

    请注意,您还需要在路径前加上 / 以使其成为绝对路径 - 在您当前的版本中,您正在寻找 performance 下的 resources 目录。

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 2015-04-01
      相关资源
      最近更新 更多