vallenato tag songs preguntas musica las disney canciones scala

scala - songs - tag de musica



¿Por qué obtengo una excepción MalformedInputException de este código? (2)

Desde el JavaDoc:

MalformedInputException lanzada cuando una secuencia de bytes de entrada no es legal para un conjunto de caracteres dado, o una secuencia de caracteres de entrada no es una secuencia Unicode de dieciséis bits legal.

Pase la codificación currect como parámetro al método Source.fromFile .

Soy un novato en Scala, y quería escribir algunos códigos fuente de mí mismo para mejorar. He escrito un objeto simple (con una entrada principal) para simular una llamada "grep" en todos los archivos del directorio actual. (Lanzamiento el programa desde Eclipse Indigo, y en 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) } }

Pero obtengo una java.nio.charset.MalformedInputException, que no puedo resolver:

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)

Gracias de antemano por las ayudas :)


Puede manejar esta excepción de codificación de caracteres agregando el siguiente fragmento de código en su código

import scala.io.Codec import java.nio.charset.CodingErrorAction implicit val codec = Codec("UTF-8") codec.onMalformedInput(CodingErrorAction.REPLACE) codec.onUnmappableCharacter(CodingErrorAction.REPLACE)