Comment écrire le contenu d'un Scala de flux dans un fichier?

J'ai un Scala flux d'octets que je voudrais écrire dans un fichier. Le flux a trop de données à la mémoire tampon de l'ensemble de la mémoire.

Comme une première tentative, j'ai créé un InputStream similaire à ceci:

class MyInputStream(data: Stream[Byte]) extends InputStream {
  private val iterator = data.iterator
  override def read(): Int = if (iterator.hasNext) iterator.next else -1
}

Puis-je utiliser Apache Commons pour écrire le fichier:

val source = new MyInputStream(dataStream)
val target = new FileOutputStream(file)
try {
  IOUtils.copy(source, target)
} finally {
  target.close
}

Cela fonctionne, mais je ne suis pas trop satisfait de la performance. Je suppose que l'appel MyInputStream.read pour chaque octet introduit beaucoup de frais généraux. Est-il un meilleur moyen?

OriginalL'auteur mrog | 2015-04-30