Package scalaSci.math.io.stream

Source Code of scalaSci.math.io.stream.BinaryOutputStream

package scalaSci.math.io.stream;

import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import scalaSci.math.io.littleendian.LEDataOutputStream;

/**
* BSD License
*
* @author Yann RICHET
*/

public class BinaryOutputStream extends OutputStream {

    private OutputStream stream;

    public static String LITTLE_ENDIAN = "LITTLE_ENDIAN";

    public static String BIG_ENDIAN = "BIG_ENDIAN";

    protected boolean bigEndian;

    public BinaryOutputStream(OutputStream out, String endian) {
        bigEndian = isBigEndian(endian);
        stream = out;
    }

    public BinaryOutputStream(OutputStream out, boolean endian) {
        bigEndian = endian;
        stream = out;
    }

    private boolean isBigEndian(String endian) {
        boolean be;
        if (endian.equals(LITTLE_ENDIAN)) {
            be = false;
        } else if (endian.equals(BIG_ENDIAN)) {
            be = true;
        } else {
            throw new IllegalArgumentException(
                    "The Endian type : "
                            + endian
                            + "is unknown. You must specify LITTLE_ENDIAN or BIG_ENDIAN.");
        }
        return be;
    }

    public static void writeDoubleArray(OutputStream out, double[] array,
            String endian) {
        BinaryOutputStream bs = new BinaryOutputStream(out, endian);
        bs.writeDoubleArray(array, false);
    }

    public static void appendDoubleArray(OutputStream out, double[] array,
            String endian) {
        BinaryOutputStream bs = new BinaryOutputStream(out, endian);
        bs.writeDoubleArray(array, true);
    }

    public static void writeFloatArray(OutputStream out, float[] array,
            String endian) {
        BinaryOutputStream bs = new BinaryOutputStream(out, endian);
        bs.writeFloatArray(array, false);
    }

    public static void appendFloatArray(OutputStream out, float[] array,
            String endian) {
        BinaryOutputStream bs = new BinaryOutputStream(out, endian);
        bs.writeFloatArray(array, true);
    }

    public static void writeIntArray(OutputStream out, int[] array,
            String endian) {
        BinaryOutputStream bs = new BinaryOutputStream(out, endian);
        bs.writeIntArray(array, false);
    }

    public static void appendIntArray(OutputStream out, int[] array,
            String endian) {
        BinaryOutputStream bs = new BinaryOutputStream(out, endian);
        bs.writeIntArray(array, true);
    }

    /**
     * Write an int array in a binary File
     *
     * @param array
     *            int[]
     * @param append
     *            boolean
     */

    public void writeIntArray(int[] array, boolean append) {
        try {
            DataOutput dos;
            if (bigEndian) {
                dos = new DataOutputStream(stream);
            } else {
                dos = new LEDataOutputStream(stream);
            }

            for (int i = 0; i < array.length; i++) {
                dos.writeInt(array[i]);
            }

            stream.close();
        } catch (IOException e) {
            throw new IllegalArgumentException("InputStream is unwritable : "
                    + e.toString());
        }
    }

    /**
     * Write a float array in a binary File
     *
     * @param array
     *            float[]
     * @param append
     *            boolean
     */

    public void writeFloatArray(float[] array, boolean append) {
        try {
            DataOutput dos;
            if (bigEndian) {
                dos = new DataOutputStream(stream);
            } else {
                dos = new LEDataOutputStream(stream);
            }

            for (int i = 0; i < array.length; i++) {
                dos.writeFloat(array[i]);
            }

            stream.close();
        } catch (IOException e) {
            throw new IllegalArgumentException("InputStream is unwritable : "
                    + e.toString());
        }
    }

    /**
     * Write a double array in a binary File
     *
     * @param array
     *            float[]
     * @param append
     *            boolean
     */

    public void writeDoubleArray(double[] array, boolean append) {
        try {
            DataOutput dos;
            if (bigEndian) {
                dos = new DataOutputStream(stream);
            } else {
                dos = new LEDataOutputStream(stream);
            }

            for (int i = 0; i < array.length; i++) {
                dos.writeDouble(array[i]);
            }

            stream.close();
        } catch (IOException e) {
            throw new IllegalArgumentException("InputStream is unwritable : "
                    + e.toString());
        }
    }

    /**
     * Write a text in a binary File
     *
     * @param bytes
     *            byte[]
     * @param append
     *            boolean
     */

    public void writeByteArray(byte[] bytes, boolean append) {
        try {
            DataOutputStream dos = new DataOutputStream(stream);

            dos.write(bytes);

            stream.close();

        } catch (IOException e) {
            throw new IllegalArgumentException("InputStream is unwritable : "
                    + e.toString());
        }
    }

    /**
     * Write an int in a binary File
     *
     * @param i
     *            int
     * @param append
     *            boolean
     */

    public void writeInt(int i, boolean append) {
        writeIntArray(new int[] { i }, append);
    }

    /**
     * Write a float in a binary File
     *
     * @param f
     *            float
     * @param append
     *            boolean
     */

    public void writeFloat(float f, boolean append) {
        writeFloatArray(new float[] { f }, append);
    }

    /**
     * Write a double in a binary File
     *
     * @param d
     *            double
     * @param append
     *            boolean
     */

    public void writeDouble(double d, boolean append) {
        writeDoubleArray(new double[] { d }, append);
    }

    /**
     * Write a text in a binary File
     *
     * @param b
     *            byte
     * @param append
     *            boolean
     */

    public void writeByte(byte b, boolean append) {
        writeByteArray(new byte[] { b }, append);
    }

    /**
     * Write a text in a binary File
     *
     * @param b
     *            byte
     * @param append
     *            boolean
     */

    public void write(int i) {
        writeInt(i, false);
    }

}
TOP

Related Classes of scalaSci.math.io.stream.BinaryOutputStream

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.