Scala不读取资源文件夹

时间:2016-10-31 13:12:12

标签: scala sbt intellij-15

为什么以下内容未读取war-and-peace.txt文件夹中的resources文件?

我项目中的文件夹结构是Intellij创建的标准Scala结构。

出于某种原因,当我把它放在src/main/scala(即我的Scala代码所在的位置)时它只读取这个文件,但是当我把它放在src/main/resources中时忽略了这个文件。我得到的问题java.lang.NullPointerException,顺便说一句,当我试图阅读"/war-and-peace.txt"(带有前面的斜线)时,我也会得到同样的例外,如果你想提出建议的话。)

val file = new File(classLoader.getResource("war-and-peace.txt").getFile())

Source.fromFile(file).....

我正在使用

java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

build.sbt:

name := "my-project"

version := "1.0"

scalaVersion := "2.11.8"

resourceDirectory in Compile := baseDirectory.value / "resources"

libraryDependencies += "junit" % "junit" % "4.12"

libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4"

2 个答案:

答案 0 :(得分:2)

使用getClass而非classLoader并将/放在资源名称/war-and-peace.txt的前面。 war-and-peace.txt文件必须位于资源文件夹(src / main / resources)。

val file = getClass.getResource("/war-and-peace.txt").getFile()

Source.fromFile(file).getLines.foreach(println)

在一行

Source.fromFile(getClass.getResource("/war-and-peace.txt").getFile).getLines().foreach(println)

getClass.getResourceAsStream 更可靠,因为当代码打包在一个jar文件中时也能正常工作

Source.fromInputStream(getClass.getResourceAsStream("/war-and-peace.txt")).getLines().foreach(println)

答案 1 :(得分:-1)

通过将 var b = (Random().nextInt(99) + 1); var operate = getOperator(); var result; @override void initState(){ result = calculate(a,operate,b); super.initState(); } 放在<?php $user = $_GET['user']; if (in_array($_GET['user'], ['User1', 'User2'])) { }else { echo "You are not in the list"; die; } ?> 中并运行测试用例,可以获得输出。

println(Source.fromResource(“ dummy.txt”)。getLines.length)