# Class CRAMContainerStreamWriter

java.lang.Object
htsjdk.samtools.CRAMContainerStreamWriter

public class CRAMContainerStreamWriter extends Object
Class for writing SAMRecords into a series of CRAM containers on an output stream, with an optional index.

## Constructor Summary

Constructors
Constructor
Description
`CRAMContainerStreamWriter(CRAMEncodingStrategy encodingStrategy, CRAMReferenceSource referenceSource, SAMFileHeader samFileHeader, OutputStream outputStream, CRAMIndexer indexer, String outputIdentifier)`
Create a CRAMContainerStreamWriter for writing SAM records into a series of CRAM containers on output stream, with an optional index.
`CRAMContainerStreamWriter(OutputStream outputStream, CRAMReferenceSource source, SAMFileHeader samFileHeader, String outputIdentifier, CRAMIndexer indexer)`
Create a CRAMContainerStreamWriter for writing SAM records into a series of CRAM containers on output stream, with an optional index.
`CRAMContainerStreamWriter(OutputStream recordOutputStream, OutputStream indexOutputStream, CRAMReferenceSource source, SAMFileHeader samFileHeader, String outputIdentifier)`
Create a CRAMContainerStreamWriter for writing SAM records into a series of CRAM containers on output stream, with an optional index.

## Method Summary

Modifier and Type
Method
Description
`void`
`finish(boolean writeEOFContainer)`
Finish writing to the stream.
`void`
`writeAlignment(SAMRecord alignment)`
Accumulate alignment records until we meet the threshold to flush a container.
`protected void`
`writeContainer(Container container)`
`void`
`writeHeader()`
Write a CRAM file header and the previously provided SAM header to the stream.
`void`
`writeHeader(SAMFileHeader requestedSAMFileHeader)`
Write a CRAM file header and the provided SAM header to the stream.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### CRAMContainerStreamWriter

public CRAMContainerStreamWriter(OutputStream recordOutputStream, OutputStream indexOutputStream, CRAMReferenceSource source, SAMFileHeader samFileHeader, String outputIdentifier)
Create a CRAMContainerStreamWriter for writing SAM records into a series of CRAM containers on output stream, with an optional index.

Parameters:
  `recordOutputStream` - where to write the CRAM stream.
  `indexOutputStream` - where to write the output index. Can be null if no index is required.
  `source` - reference cramReferenceSource
  `samFileHeader` - `SAMFileHeader` to be used. Sort order is determined by the sortOrder property of this arg.
  `outputIdentifier` - used for display in error message display

### CRAMContainerStreamWriter

public CRAMContainerStreamWriter(OutputStream outputStream, CRAMReferenceSource source, SAMFileHeader samFileHeader, String outputIdentifier, CRAMIndexer indexer)
Create a CRAMContainerStreamWriter for writing SAM records into a series of CRAM containers on output stream, with an optional index.

Parameters:
  `outputStream` - where to write the CRAM stream.
  `source` - reference cramReferenceSource
  `samFileHeader` - `SAMFileHeader` to be used. Sort order is determined by the sortOrder property of this arg.
  `outputIdentifier` - used for display in error message display
  `indexer` - CRAM indexer. Can be null if no index is required.

### CRAMContainerStreamWriter

public CRAMContainerStreamWriter(CRAMEncodingStrategy encodingStrategy, CRAMReferenceSource referenceSource, SAMFileHeader samFileHeader, OutputStream outputStream, CRAMIndexer indexer, String outputIdentifier)
Create a CRAMContainerStreamWriter for writing SAM records into a series of CRAM containers on output stream, with an optional index.

Parameters:
  `encodingStrategy` - encoding strategy values (includes CRAM version)
  `referenceSource` - reference cramReferenceSource
  `samFileHeader` - `SAMFileHeader` to be used. Sort order is determined by the sortOrder property of this arg.
  `outputStream` - where to write the CRAM stream.
  `indexer` - CRAM indexer. Can be null if no index is required.
  `outputIdentifier` - informational string included in error reporting

## Method Details

### writeAlignment

public void writeAlignment(SAMRecord alignment)
Accumulate alignment records until we meet the threshold to flush a container.

Parameters:
  `alignment` - must not be null

### writeHeader

public void writeHeader(SAMFileHeader requestedSAMFileHeader)
Write a CRAM file header and the provided SAM header to the stream. Retained for backward compatibility with external projects (disq, GATK).

### writeHeader

public void writeHeader()
Write a CRAM file header and the previously provided SAM header to the stream.

### finish

public void finish(boolean writeEOFContainer)
Finish writing to the stream. Flushes the record cache and optionally emits an EOF container.

Parameters:
  `writeEOFContainer` - true if an EOF container should be written. Only use false if writing a CRAM file fragment which will later be aggregated into a complete CRAM file.

### writeContainer

protected void writeContainer(Container container)