/** * Writes CRAM header into the specified {@link OutputStream}. * * @param cramHeader the {@link CramHeader} object to write * @param outputStream the output stream to write to * @return the number of bytes written out * @throws IOException as per java IO contract */ public static long writeCramHeader(final CramHeader cramHeader, final OutputStream outputStream) throws IOException { // if (cramHeader.getVersion().major < 3) throw new RuntimeException("Deprecated CRAM version: " + cramHeader.getVersion().major); outputStream.write("CRAM".getBytes("US-ASCII")); outputStream.write(cramHeader.getVersion().major); outputStream.write(cramHeader.getVersion().minor); outputStream.write(cramHeader.getId()); for (int i = cramHeader.getId().length; i < 20; i++) outputStream.write(0); final long length = CramIO.writeContainerForSamFileHeader(cramHeader.getVersion().major, cramHeader.getSamFileHeader(), outputStream); return CramIO.DEFINITION_LENGTH + length; }
/** * Writes CRAM header into the specified {@link OutputStream}. * * @param cramHeader the {@link CramHeader} object to write * @param outputStream the output stream to write to * @return the number of bytes written out */ public static long writeCramHeader(final CramHeader cramHeader, final OutputStream outputStream) { // if (cramHeader.getVersion().major < 3) throw new RuntimeException("Deprecated CRAM version: " + cramHeader.getVersion().major); try { outputStream.write("CRAM".getBytes("US-ASCII")); outputStream.write(cramHeader.getVersion().major); outputStream.write(cramHeader.getVersion().minor); outputStream.write(cramHeader.getId()); for (int i = cramHeader.getId().length; i < 20; i++) outputStream.write(0); final long length = CramIO.writeContainerForSamFileHeader(cramHeader.getVersion().major, cramHeader.getSamFileHeader(), outputStream); return CramIO.DEFINITION_LENGTH + length; } catch (final IOException e) { throw new RuntimeIOException(e); } }