【问题标题】:How can I get the project path in Scala?如何在 Scala 中获取项目路径?
【发布时间】:2014-11-20 00:36:20
【问题描述】:

我正在尝试从我的 Scala 项目中读取一些文件,如果我使用:java.io.File(".").getCanonicalPath() 我发现我的当前目录离它们很远(正是我安装 Scala Eclipse 的位置)。那么如何将当前目录更改为我的项目的根目录,或者获取我的项目的路径?我真的不想拥有输入文件的绝对路径。

  val PATH = raw"E:\lang\scala\progfun\src\examples\"
  def printFileContents(filename: String) {
    try {
      println("\n" + PATH + filename)
      io.Source.fromFile(PATH + filename).getLines.foreach(println)
    } catch {
      case _:Throwable => println("filename " + filename + " not found")
    }
  }

  val filenames = List("random.txt", "a.txt", "b.txt", "c.txt")
  filenames foreach printFileContents

【问题讨论】:

  • os-lib 是使用 Scala 管理路径和读取文件 as described here 的最佳现代解决方案。 Java 文件系统库很混乱,既然存在这个很好的替代方案,就应该尽可能避免使用。

标签: eclipse file scala io path


【解决方案1】:
  1. 将您的文件添加到src/main/resources/<packageName>,其中<packageName> 是您的课程包。
  2. 换行val PATH = getClass.getResource("").getPath

【讨论】:

  • 好吧,就我而言(在 Windows 8 上),返回的路径是 /bin// 这正是我想要的。谢谢!
【解决方案2】:

另一种解决方法是将您需要的路径放入用户环境变量中,并使用 sys.env (如果失败则返回异常)或 System.getenv 调用它(如果失败则返回 null),例如 val PATH = sys.env("ScalaProjectPath") 但问题是,如果您移动项目,则必须更新变量,这是我不想要的。

【讨论】:

    【解决方案3】:
    new File(".").getCanonicalPath
    

    将为您提供所需的基本路径

    【讨论】:

      猜你喜欢
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2017-04-07
      • 2016-08-07
      • 1970-01-01
      相关资源
      最近更新 更多