线程中的 Scala 异常 "main" java.io.FileNotFoundException
Scala exception in thread "main" java.io.FileNotFoundException
下面是我的 Scala 代码:
import scala.io.Source
case class TempData(day:Int , DayOfYear:Int , month:Int , year:Int ,
precip:Double , snow:Double , tave:Double, tmax:Double, tmin:Double)
object TempData {
def main(args:Array[String]) : Unit ={
val source = Source.fromFile("C:///DataResearch/SparkScala/MN212142_9392.csv")
val lines = source.getLines().drop(1)
val data= lines.map{ line =>
val p = line.split(",")
TempData(p(0).toInt , p(1).toInt, p(2).toInt, p(4).toInt
, p(5).toDouble, p(6).toDouble , p(7).toDouble, p(8).toDouble,p(9).toDouble)
}.toArray
source.close()
data.take(5).foreach(println)
}
}
错误如下:
C:\Java\jdk1.8.0_144\bin\java "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.3\lib\idea_rt.jar=2298:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Java\jdk1.8.0_144\jre\lib\charsets.jar;C:\Java\jdk1.8.0_144\jre\lib\deploy.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\access-bridge-64.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\cldrdata.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\dnsns.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\jaccess.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\jfxrt.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\localedata.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\nashorn.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunec.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunjce_provider.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunmscapi.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunpkcs11.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\zipfs.jar;C:\Java\jdk1.8.0_144\jre\lib\javaws.jar;C:\Java\jdk1.8.0_144\jre\lib\jce.jar;C:\Java\jdk1.8.0_144\jre\lib\jfr.jar;C:\Java\jdk1.8.0_144\jre\lib\jfxswt.jar;C:\Java\jdk1.8.0_144\jre\lib\jsse.jar;C:\Java\jdk1.8.0_144\jre\lib\management-agent.jar;C:\Java\jdk1.8.0_144\jre\lib\plugin.jar;C:\Java\jdk1.8.0_144\jre\lib\resources.jar;C:\Java\jdk1.8.0_144\jre\lib\rt.jar;C:\Users\Dell\IdeaProjects\ScalaSpark\target\scala-2.11\classes;C:\Users\Dell\.ivy2\cache\org.scala-lang\scala-library\jars\scala-library-2.11.12.jar TempData
Exception in thread "main" java.io.FileNotFoundException: C:\DataResearch\SparkScala\MN212142_9392.csv (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at scala.io.Source$.fromFile(Source.scala:91)
at scala.io.Source$.fromFile(Source.scala:76)
at scala.io.Source$.fromFile(Source.scala:54)
at TempData$.main(TempData.scala:7)
at TempData.main(TempData.scala)
Process finished with exit code 1
我的文件(MN212142_9392.csv)位于 C 盘中的 DataResearch 和 SparkScala 文件夹中。我已经尝试了所有可能的更改,但没有任何帮助。
尝试使用 File
class 而不是 Source
。
new File("path")
它应该可以解决您的问题:)
或使用class Files
:)
您可以在下面找到文档链接:
https://docs.oracle.com/javase/7/docs/api/java/io/File.html
https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
仔细检查您的路径。在我看来,更好的选择是使用相对路径而不是绝对路径。把这个文件放在一个项目中,尽量使用相对路径。您的应用程序找不到您的文件:)
编辑:
创建了一个简单的文件 TempData.scala,其中包含:
import scala.io.Source
object TempData {
def main(args:Array[String]) : Unit ={
val source = Source.fromFile("test.csv")
val lines = source.getLines()
}
}
我创建了文件test.csv
我用了scalac TempData.scala
,然后是scala TempData
。一切都很好,因为你用对了方法。你的路径有问题。所以我的建议是尝试使用您放入项目中的文件,如果一切正常,请检查您之前的路径:)
我一直面临类似错误的问题:查找我完成的示例代码:
object CSVDemo extends App {
val bufferedSource = io.Source.fromFile("C:\Users\dell\IdeaProjects\SbtExampleProject\project\job_test.txt")
for (line <- bufferedSource.getLines()) {
val cols = line.split(",").map(_.trim)
println(s"${cols(0)}|${cols(1)}|${cols(2)}|${cols(3)}|${cols(4)}")
}
注意:我必须在项目目录中创建示例文件,当我试图查看它的位置时,我注意到路径是用“\”创建的,尝试一下,看看效果如何
下面是我的 Scala 代码:
import scala.io.Source
case class TempData(day:Int , DayOfYear:Int , month:Int , year:Int ,
precip:Double , snow:Double , tave:Double, tmax:Double, tmin:Double)
object TempData {
def main(args:Array[String]) : Unit ={
val source = Source.fromFile("C:///DataResearch/SparkScala/MN212142_9392.csv")
val lines = source.getLines().drop(1)
val data= lines.map{ line =>
val p = line.split(",")
TempData(p(0).toInt , p(1).toInt, p(2).toInt, p(4).toInt
, p(5).toDouble, p(6).toDouble , p(7).toDouble, p(8).toDouble,p(9).toDouble)
}.toArray
source.close()
data.take(5).foreach(println)
}
}
错误如下:
C:\Java\jdk1.8.0_144\bin\java "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.3\lib\idea_rt.jar=2298:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Java\jdk1.8.0_144\jre\lib\charsets.jar;C:\Java\jdk1.8.0_144\jre\lib\deploy.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\access-bridge-64.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\cldrdata.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\dnsns.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\jaccess.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\jfxrt.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\localedata.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\nashorn.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunec.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunjce_provider.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunmscapi.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\sunpkcs11.jar;C:\Java\jdk1.8.0_144\jre\lib\ext\zipfs.jar;C:\Java\jdk1.8.0_144\jre\lib\javaws.jar;C:\Java\jdk1.8.0_144\jre\lib\jce.jar;C:\Java\jdk1.8.0_144\jre\lib\jfr.jar;C:\Java\jdk1.8.0_144\jre\lib\jfxswt.jar;C:\Java\jdk1.8.0_144\jre\lib\jsse.jar;C:\Java\jdk1.8.0_144\jre\lib\management-agent.jar;C:\Java\jdk1.8.0_144\jre\lib\plugin.jar;C:\Java\jdk1.8.0_144\jre\lib\resources.jar;C:\Java\jdk1.8.0_144\jre\lib\rt.jar;C:\Users\Dell\IdeaProjects\ScalaSpark\target\scala-2.11\classes;C:\Users\Dell\.ivy2\cache\org.scala-lang\scala-library\jars\scala-library-2.11.12.jar TempData
Exception in thread "main" java.io.FileNotFoundException: C:\DataResearch\SparkScala\MN212142_9392.csv (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at scala.io.Source$.fromFile(Source.scala:91)
at scala.io.Source$.fromFile(Source.scala:76)
at scala.io.Source$.fromFile(Source.scala:54)
at TempData$.main(TempData.scala:7)
at TempData.main(TempData.scala)
Process finished with exit code 1
我的文件(MN212142_9392.csv)位于 C 盘中的 DataResearch 和 SparkScala 文件夹中。我已经尝试了所有可能的更改,但没有任何帮助。
尝试使用 File
class 而不是 Source
。
new File("path")
它应该可以解决您的问题:)
或使用class Files
:)
您可以在下面找到文档链接:
https://docs.oracle.com/javase/7/docs/api/java/io/File.html
https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
仔细检查您的路径。在我看来,更好的选择是使用相对路径而不是绝对路径。把这个文件放在一个项目中,尽量使用相对路径。您的应用程序找不到您的文件:)
编辑:
创建了一个简单的文件 TempData.scala,其中包含:
import scala.io.Source
object TempData {
def main(args:Array[String]) : Unit ={
val source = Source.fromFile("test.csv")
val lines = source.getLines()
}
}
我创建了文件test.csv
我用了scalac TempData.scala
,然后是scala TempData
。一切都很好,因为你用对了方法。你的路径有问题。所以我的建议是尝试使用您放入项目中的文件,如果一切正常,请检查您之前的路径:)
我一直面临类似错误的问题:查找我完成的示例代码:
object CSVDemo extends App {
val bufferedSource = io.Source.fromFile("C:\Users\dell\IdeaProjects\SbtExampleProject\project\job_test.txt")
for (line <- bufferedSource.getLines()) {
val cols = line.split(",").map(_.trim)
println(s"${cols(0)}|${cols(1)}|${cols(2)}|${cols(3)}|${cols(4)}")
}
注意:我必须在项目目录中创建示例文件,当我试图查看它的位置时,我注意到路径是用“\”创建的,尝试一下,看看效果如何