如何使用scala中的相对路径读取文本文件

时间:2015-07-16 11:57:50

标签: scala maven

我有一个用scala编写的简单mvn项目。我想访问一个文本文件并阅读其内容。代码工作正常但唯一的问题是我在读取文本文件时给出绝对路径。以下是我项目的目录结构。

如何使用相对路径来读取该文件? (我是否必须将movies.txt文件移动到资源目录中,如果是这样,我将如何读取该文件?)

非常感谢任何见解。谢谢

myproject
|-src
|  |-resources
|  |-scala
|      |-movies.simulator
|           |-Boot
|           |-Simulate
|                |-myobject.scala
|                      |Simulate
|
|-target
|-pom.xml
|-README
|-movies.txt

在模拟是包对象的myobject.scala中,我使用绝对路径访问movies.txt文件。

import scala.io.Source
Source
    .fromFile("/home/eshan/projecs/myproject/movies.txt")
    .getLines
    .foreach { line =>
    count+=1
      // custom code            
}

3 个答案:

答案 0 :(得分:6)

movies.txt移至resources目录,然后您可以执行以下操作:

val f = new File(getClass.getClassLoader.getResource("movies.txt").getPath)

import scala.io.Source
Source
    .fromFile(f)
    .getLines
    .foreach { line =>
    count+=1
      // custom code            
}

答案 1 :(得分:1)

更简洁地说,您可以使用:

Source.fromResource("movies.txt") 

将查找相对于资源文件夹的路径。

答案 2 :(得分:0)

os-lib是使用Scala读取文件的最佳方法。

os.read(os.pwd/"movies.txt")

os-lib也supports relative paths,但此处不需要。

此lib使得读取文件,构造路径和其他文件系统操作变得容易,有关更多详细信息,请参见here