opendap/src/main/java/opendap/dap/DataDDS.java
public final void externalize(OutputStream os, boolean compress, boolean headers)
            throws IOException {
        // First, print headers
        if (headers) {
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(os,Util.UTF8));
            pw.println("HTTP/1.0 200 OK");
            pw.println("XDAP: " + ServerVersion.DAP2_PROTOCOL_VERSION);
            pw.println("XDODS-Server: DODS/" + ServerVersion.DAP2_PROTOCOL_VERSION);
            pw.println("Content-type: application/octet-stream");
            pw.println("Content-Description: dods-data");
            if (compress) {
                pw.println("Content-Encoding: deflate");
            }
            pw.println();
            pw.flush();
        }

        // Buffer the output stream for better performance
        OutputStream bufferedOS;
        if (compress) {
            // need a BufferedOutputStream - 3X performance - LOOK: why ??
            bufferedOS = new BufferedOutputStream(new DeflaterOutputStream(os));
        } else {
            bufferedOS = new BufferedOutputStream(os);
        }

        // Redefine PrintWriter here, so the DDS is also compressed if necessary
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(bufferedOS,Util.UTF8));
        print(pw);
        // pw.println("Data:");  // JCARON CHANGED
        pw.flush();
        bufferedOS.write("\nData:\n".getBytes(CDM.utf8Charset)); // JCARON CHANGED
        bufferedOS.flush();

        // Use a DataOutputStream for serialize
        DataOutputStream dataOS = new DataOutputStream(bufferedOS);
        for (Enumeration e = getVariables(); e.hasMoreElements();) {
            ClientIO bt = (ClientIO) e.nextElement();
            bt.externalize(dataOS);
        }
        // Note: for DeflaterOutputStream, flush() is not sufficient to flush
        // all buffered data
        dataOS.close();
    }
public final void externalize(OutputStream os, boolean compress, boolean headers)
            throws IOException {
        // First, print headers
        if (headers) {
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(os,Util.UTF8));
            pw.println("HTTP/1.0 200 OK");
            pw.println("XDAP: " + ServerVersion.DAP2_PROTOCOL_VERSION);
            pw.println("XDODS-Server: DODS/" + ServerVersion.DAP2_PROTOCOL_VERSION);
            pw.println("Content-type: application/octet-stream");
            pw.println("Content-Description: dods-data");
            if (compress) {
                pw.println("Content-Encoding: deflate");
            }
            pw.println();
            pw.flush();
        }

        // Buffer the output stream for better performance
        OutputStream bufferedOS;
        if (compress) {
            // need a BufferedOutputStream - 3X performance - LOOK: why ??
            bufferedOS = new BufferedOutputStream(new DeflaterOutputStream(os));
        } else {
            bufferedOS = new BufferedOutputStream(os);
        }

        // Redefine PrintWriter here, so the DDS is also compressed if necessary
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(bufferedOS,Util.UTF8));
        print(pw);
        // pw.println("Data:");  // JCARON CHANGED
        pw.flush();
        bufferedOS.write("\nData:\n".getBytes(CDM.utf8Charset)); // JCARON CHANGED
        bufferedOS.flush();

        // Use a DataOutputStream for serialize
        DataOutputStream dataOS = new DataOutputStream(bufferedOS);
        for (Enumeration e = getVariables(); e.hasMoreElements();) {
            ClientIO bt = (ClientIO) e.nextElement();
            bt.externalize(dataOS);
        }
        // Note: for DeflaterOutputStream, flush() is not sufficient to flush
        // all buffered data
        dataOS.close();
    }
public final void externalize ( OutputStream os , boolean compress , boolean headers ) throws IOException { // First, print headers
 if ( headers ) { PrintWriter pw = new PrintWriter ( new OutputStreamWriter ( os , Util . UTF8 ) ) ; pw . println ( "HTTP/1.0 200 OK" ) ; pw . println ( "XDAP: " + ServerVersion . DAP2_PROTOCOL_VERSION ) ; pw . println ( "XDODS-Server: DODS/" + ServerVersion . DAP2_PROTOCOL_VERSION ) ; pw . println ( "Content-type: application/octet-stream" ) ; pw . println ( "Content-Description: dods-data" ) ; if ( compress ) { pw . println ( "Content-Encoding: deflate" ) ; } pw . println ( ) ; pw . flush ( ) ; } // Buffer the output stream for better performance
 OutputStream bufferedOS ; if ( compress ) { // need a BufferedOutputStream - 3X performance - LOOK: why ??
 bufferedOS = new BufferedOutputStream ( new DeflaterOutputStream ( os ) ) ; } else { bufferedOS = new BufferedOutputStream ( os ) ; } // Redefine PrintWriter here, so the DDS is also compressed if necessary
 PrintWriter pw = new PrintWriter ( new OutputStreamWriter ( bufferedOS , Util . UTF8 ) ) ; print ( pw ) ; // pw.println("Data:");  // JCARON CHANGED
 pw . flush ( ) ; bufferedOS . write ( "\nData:\n" . getBytes ( CDM . utf8Charset ) ) ; // JCARON CHANGED
 bufferedOS . flush ( ) ; // Use a DataOutputStream for serialize
 DataOutputStream dataOS = new DataOutputStream ( bufferedOS ) ; for ( Enumeration e = getVariables ( ) ; e . hasMoreElements ( ) ; ) { ClientIO bt = ( ClientIO ) e . nextElement ( ) ; bt . externalize ( dataOS ) ; } // Note: for DeflaterOutputStream, flush() is not sufficient to flush
 // all buffered data
 dataOS . close ( ) ; }
Dump the dataset using externalize methods. This should create
a multipart Mime document with the binary representation of the
DDS that is currently in memory.

@param os       the <code>OutputStream</code> to use.
@param compress <code>true</code> if we should compress the output.
@param headers  <code>true</code> if we should print HTTP headers.
@throws IOException thrown on any <code>OutputStream</code> exception.
Dump the dataset using externalize methods . This should create a multipart Mime document with the binary representation of the DDS that is currently in memory .