Вы на правильном пути, но я бы использовал конструктор SequenceInputStream
, который принимает Enumeration
из File
с, и просто сопоставил бы мой входной список файлов с нужными типами, чтобы передать это:
import java.io.{File, FileInputStream, InputStream, SequenceInputStream}
import scala.collection.JavaConverters.asJavaEnumeration
def mergeInputStreams(files: Iterator[File]): InputStream =
new SequenceInputStream(asJavaEnumeration(files.map(new FileInputStream(_))))
Другая хитрость заключается в использовании встроенного метода преобразования Scala для преобразования из Scala Iterator
в Java Enumeration
.Преобразование сохраняет порядок и тот факт, что это обход последовательности файлов, поэтому оно также сохраняет конкатенацию входного потока.