我有一个用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
}
答案 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。