2014-09-25 1258 views
9

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

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 

回答

11
  1. 将文件添加到src/main/resources/<packageName>,其中<packageName>是你的类包。
  2. 更改线路val PATH = getClass.getResource("").getPath
+0

那么,在我的情况下(在Windows 8上)返回的路径是/bin/ /这正是我想要的。谢谢! – 2014-09-25 11:36:11

0

另一个解决办法是让你在用户环境变量需要的路径,并与sys.env调用它(返回异常,如果失败)或System.getenv(如果失败,则返回空值),例如val PATH = sys.env("ScalaProjectPath"),但问题是,如果移动项目,则必须更新变量,这是我不想要的。

相关问题