StreamConverters.asOutputStream

Create a source that materializes into an OutputStream.

Additional Sink and Source converters

Signature

StreamConverters.asOutputStream

Description

Create a source that materializes into an OutputStream. When bytes are written to the OutputStream they are emitted from the source.

The OutputStream will no longer be writable when the Source has been canceled from its downstream, and closing the OutputStream will complete the Source.

Reactive Streams semantics

emits when bytes are written to the OutputStream

completes when the OutputStream is closed

Example

Here is an example of a Source that materializes into a java.io.OutputStream, and is connected to a Sink which concatenates the incoming ByteStrings

Scala
Java
sourceval source: Source[ByteString, OutputStream] = StreamConverters.asOutputStream()
val sink: Sink[ByteString, Future[ByteString]] = Sink.fold[ByteString, ByteString](ByteString.empty)(_ ++ _)

val (outputStream, result): (OutputStream, Future[ByteString]) =
  source.toMat(sink)(Keep.both).run()
sourcefinal Source<ByteString, OutputStream> source = StreamConverters.asOutputStream();
final Sink<ByteString, CompletionStage<ByteString>> sink =
    Sink.fold(emptyByteString(), (ByteString arg1, ByteString arg2) -> arg1.concat(arg2));

final Pair<OutputStream, CompletionStage<ByteString>> output =
    source.toMat(sink, Keep.both()).run(system);