Scala: записать каждый извлеченный файл данных в другой - PullRequest
0 голосов
/ 29 марта 2019

Поскольку я хочу извлечь данные из .doc файлов с помощью apache Tika, я запускаю следующий код:

import org.apache.tika.io.TikaInputStream
import org.apache.tika.parser.{AutoDetectParser, ParseContext}
import org.apache.spark._
import scala.collection.mutable
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.input.PortableDataStream
import org.apache.tika.metadata._
import org.apache.tika.parser._
import org.apache.tika.sax.WriteOutContentHandler
import java.io._
import java.io.FileInputStream
import java.io.{File, PrintWriter}
import java.nio.file.{Path,Paths}

object ParserData {

   def main(args: Array[String]) {

    val filesPath = "Path/Input/files"
    val conf = new SparkConf().setMaster("local[2]").setAppName("ParserData")
    val sc = new SparkContext(conf)
    val fileData = sc.binaryFiles(filesPath)
    fileData.foreach( x => tikaFunc(x)) 
  }

 def tikaFunc (a: (String, PortableDataStream)) = {

    val file : File = new File(a._1.drop(5))
    val myparser : AutoDetectParser = new AutoDetectParser()
    val stream : InputStream = new FileInputStream(file)
    val handler : WriteOutContentHandler = new WriteOutContentHandler(-1)
    val metadata : Metadata = new Metadata()
    val context : ParseContext = new ParseContext()

    myparser.parse(stream, handler, metadata, context)

    stream.close

    val content = handler.toString()
    println(handler.toString())
    println("------------------------------------------------")




    val count = Option(new File("Path/Output/files").list).map(_.size).getOrElse(0) //to count the number of Input files
    for (i <- 0 until count){
    val writer = new PrintWriter(new FileOutputStream(s"Path/Output/files$i.txt"),true)
    writer.println(content)
    writer.close()
 }  
}


}


Вывод, который мне нужен, - это извлеченные данные каждого .doc в другом .txt файле

Мой код дает мне только вывод одного из моих .doc файлов в каждом из .txt сгенерированные файлы

В IDE Iam используется правильный вывод, но не сгенерированные файлы.

Если у кого-нибудь есть идея, как мне получить нужный мне выход, пожалуйста, ПОМОГИТЕ!

Большое спасибо заранее!

...