scala – 为什么要从此代码中获得MalformedInputException?
发布时间:2020-12-16 09:32:35 所属栏目:安全 来源:网络整理
导读:我是Scala中的新手,我想自己写一些源代码让我变得更好。 我已经写了一个简单的对象(有一个主条目),以模拟当前目录的所有文件的“grep”调用。 (我从Eclipse Indigo和Debian Squeeze启动程序): package com.gmail.bernabe.laurent.scala.testsimport java.
我是Scala中的新手,我想自己写一些源代码让我变得更好。
我已经写了一个简单的对象(有一个主条目),以模拟当前目录的所有文件的“grep”调用。 (我从Eclipse Indigo和Debian Squeeze启动程序): package com.gmail.bernabe.laurent.scala.tests import java.io.File import scala.io.Source object DealWithFiles { def main(args:Array[String]){ for (result <- grepFilesHere(".*aur.*")) println(result) } private def grepFilesHere(pattern:String):Array[String] = { val filesHere = new File(".").listFiles def linesOfFile(file:File) = Source.fromFile(file).getLines.toList for (file <- filesHere; if file.isFile ) yield linesOfFile(file)(0) } } 但是我得到一个java.nio.charset.MalformedInputException,我无法解决: Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1 at java.nio.charset.CoderResult.throwException(CoderResult.java:260) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:319) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) at java.io.InputStreamReader.read(InputStreamReader.java:167) at java.io.BufferedReader.fill(BufferedReader.java:136) at java.io.BufferedReader.readLine(BufferedReader.java:299) at java.io.BufferedReader.readLine(BufferedReader.java:362) at scala.io.BufferedSource$BufferedLineIterator.hasNext(BufferedSource.scala:67) at scala.collection.Iterator$class.foreach(Iterator.scala:772) at scala.io.BufferedSource$BufferedLineIterator.foreach(BufferedSource.scala:43) at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:130) at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:242) at scala.io.BufferedSource$BufferedLineIterator.toList(BufferedSource.scala:43) at com.gmail.bernabe.laurent.scala.tests.DealWithFiles$.linesOfFile$1(DealWithFiles.scala:18) at com.gmail.bernabe.laurent.scala.tests.DealWithFiles$$anonfun$grepFilesHere$2.apply(DealWithFiles.scala:23) at com.gmail.bernabe.laurent.scala.tests.DealWithFiles$$anonfun$grepFilesHere$2.apply(DealWithFiles.scala:20) at scala.collection.TraversableLike$WithFilter$$anonfun$map$2.apply(TraversableLike.scala:697) at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34) at scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:38) at scala.collection.TraversableLike$WithFilter.map(TraversableLike.scala:696) at com.gmail.bernabe.laurent.scala.tests.DealWithFiles$.grepFilesHere(DealWithFiles.scala:20) at com.gmail.bernabe.laurent.scala.tests.DealWithFiles$.main(DealWithFiles.scala:10) at com.gmail.bernabe.laurent.scala.tests.DealWithFiles.main(DealWithFiles.scala) 提前感谢帮助:) 解决方法
从JavaDoc:
将currect编码作为参数传递给Source.fromFile方法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |