Scala scala.xml.XML.load(is:InputStream)正在关闭ZipInputStream

我正在使用scala提取内存中的zip文件,如下所示:

val rdd = sc.binaryfiles("/path")
          .flatMap { 
          case (name: String,content: PortableDataStream) => {
             val zis = new ZipInputStream(content.open())
             Stream.continually(zis.getNextEntry()).takeWhile(_ != null)
               .flatMap { _ =>
                      val br = new BufferedReader(new InputStreamReader(zis))
                      val root = scala.xml.XML.load(br);
                      val namespace = root.head.namespace
                      //other stuff
                    }
          }    
    }

此代码的问题是,它仅读取zip内的第一个XML文件,然后自动关闭ZipInputStream,并且出现以下错误:

 java.io.IOException: Stream closed
    at java.util.zip.ZipInputStream.ensureOpen(Unknown Source)
    at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)

我只有几个zip文件,每个zip都包含XML文件,我的目标是解析每个XML文件。因为我是Scala的新手,所以不确定自己做错了什么还是scala.xml.XML.load本身正在关闭流。

panxm916 回答:Scala scala.xml.XML.load(is:InputStream)正在关闭ZipInputStream

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3126199.html

大家都在问