org.ka2ddo.yaac.io
Class NonshareableBufferedDataOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by java.io.FilterOutputStream
          extended by org.ka2ddo.yaac.io.NonshareableBufferedDataOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.DataOutput, java.io.Flushable

public final class NonshareableBufferedDataOutputStream
extends java.io.FilterOutputStream
implements java.io.DataOutput

This class is a merged duplicate of java.io.BufferedOutputStream and java.io.DataOutputStream, except that its methods are not synchronized, limiting its use to a single thread.

See Also:
BufferedOutputStream, DataOutputStream

Field Summary
 
Fields inherited from class java.io.FilterOutputStream
out
 
Constructor Summary
NonshareableBufferedDataOutputStream(java.io.OutputStream out)
          Creates a new buffered output stream to write data to the specified underlying output stream.
NonshareableBufferedDataOutputStream(java.io.OutputStream out, byte[] buf)
          Creates a new buffered output stream to write data to the specified underlying output stream with the specified buffer.
NonshareableBufferedDataOutputStream(java.io.OutputStream out, byte[] buf, long previousFileSize)
          Creates a new buffered output stream to write data to the specified underlying output stream with the specified buffer.
NonshareableBufferedDataOutputStream(java.io.OutputStream out, int size)
          Creates a new buffered output stream to write data to the specified underlying output stream with the specified buffer size.
 
Method Summary
 void flush()
          Flushes this buffered output stream.
 long getNumWritten()
          Report the number of bytes written through this stream.
 void write(byte[] b, int off, int len)
          Writes len bytes from the specified byte array starting at offset off to this buffered output stream.
 void write(int b)
          Writes the specified byte to this buffered output stream.
 void writeBoolean(boolean v)
          Writes a boolean to the underlying output stream as a 1-byte value.
 void writeByte(int v)
          Writes out a byte to the underlying output stream as a 1-byte value.
 void writeBytes(java.lang.String s)
          Writes out the string to the underlying output stream as a sequence of bytes.
 void writeChar(int v)
          Writes a char to the underlying output stream as a 2-byte value, high byte first.
 void writeChars(java.lang.String s)
          Writes a string to the underlying output stream as a sequence of characters.
 void writeDouble(double v)
          Converts the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the underlying output stream as an 8-byte quantity, high byte first.
 void writeFloat(float v)
          Converts the float argument to an int using the floatToIntBits method in class Float, and then writes that int value to the underlying output stream as a 4-byte quantity, high byte first.
 void writeInt(int v)
          Writes an int to the underlying output stream as four bytes, high byte first.
 void writeLong(long v)
          Writes a long to the underlying output stream as eight bytes, high byte first.
 void writeShort(int v)
          Writes a short to the underlying output stream as two bytes, high byte first.
 void writeUTF(java.lang.String str)
          Writes a string to the underlying output stream using modified UTF-8 encoding in a machine-independent manner.
 
Methods inherited from class java.io.FilterOutputStream
close, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.io.DataOutput
write
 

Constructor Detail

NonshareableBufferedDataOutputStream

public NonshareableBufferedDataOutputStream(java.io.OutputStream out)
Creates a new buffered output stream to write data to the specified underlying output stream.

Parameters:
out - the underlying output stream.

NonshareableBufferedDataOutputStream

public NonshareableBufferedDataOutputStream(java.io.OutputStream out,
                                            int size)
Creates a new buffered output stream to write data to the specified underlying output stream with the specified buffer size.

Parameters:
out - the underlying output stream.
size - the buffer size.
Throws:
java.lang.IllegalArgumentException - if size < 8.

NonshareableBufferedDataOutputStream

public NonshareableBufferedDataOutputStream(java.io.OutputStream out,
                                            byte[] buf)
Creates a new buffered output stream to write data to the specified underlying output stream with the specified buffer.

Parameters:
out - the underlying output stream.
buf - the buffer to use
Throws:
java.lang.IllegalArgumentException - if buf.length < 8.

NonshareableBufferedDataOutputStream

public NonshareableBufferedDataOutputStream(java.io.OutputStream out,
                                            byte[] buf,
                                            long previousFileSize)
Creates a new buffered output stream to write data to the specified underlying output stream with the specified buffer.

Parameters:
out - the underlying output stream.
buf - the buffer to use
previousFileSize - number of bytes already in the file (suitable for appending to an existing file)
Throws:
java.lang.IllegalArgumentException - if buf.length < 8.
Method Detail

write

public void write(int b)
           throws java.io.IOException
Writes the specified byte to this buffered output stream.

Specified by:
write in interface java.io.DataOutput
Overrides:
write in class java.io.FilterOutputStream
Parameters:
b - the byte to be written.
Throws:
java.io.IOException - if an I/O error occurs.

write

public void write(byte[] b,
                  int off,
                  int len)
           throws java.io.IOException
Writes len bytes from the specified byte array starting at offset off to this buffered output stream.

Ordinarily this method stores bytes from the given array into this stream's buffer, flushing the buffer to the underlying output stream as needed. If the requested length is at least as large as this stream's buffer, however, then this method will flush the buffer and write the bytes directly to the underlying output stream. Thus redundant BufferedOutputStreams will not copy data unnecessarily.

Specified by:
write in interface java.io.DataOutput
Overrides:
write in class java.io.FilterOutputStream
Parameters:
b - the data.
off - the start offset in the data.
len - the number of bytes to write.
Throws:
java.io.IOException - if an I/O error occurs.

flush

public void flush()
           throws java.io.IOException
Flushes this buffered output stream. This forces any buffered output bytes to be written out to the underlying output stream.

Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.FilterOutputStream
Throws:
java.io.IOException - if an I/O error occurs.

writeBoolean

public final void writeBoolean(boolean v)
                        throws java.io.IOException
Writes a boolean to the underlying output stream as a 1-byte value. The value true is written out as the value (byte)1; the value false is written out as the value (byte)0.

Specified by:
writeBoolean in interface java.io.DataOutput
Parameters:
v - a boolean value to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeByte

public final void writeByte(int v)
                     throws java.io.IOException
Writes out a byte to the underlying output stream as a 1-byte value.

Specified by:
writeByte in interface java.io.DataOutput
Parameters:
v - a byte value to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeShort

public final void writeShort(int v)
                      throws java.io.IOException
Writes a short to the underlying output stream as two bytes, high byte first.

Specified by:
writeShort in interface java.io.DataOutput
Parameters:
v - a short to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeChar

public final void writeChar(int v)
                     throws java.io.IOException
Writes a char to the underlying output stream as a 2-byte value, high byte first.

Specified by:
writeChar in interface java.io.DataOutput
Parameters:
v - a char value to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeInt

public final void writeInt(int v)
                    throws java.io.IOException
Writes an int to the underlying output stream as four bytes, high byte first.

Specified by:
writeInt in interface java.io.DataOutput
Parameters:
v - an int to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeLong

public final void writeLong(long v)
                     throws java.io.IOException
Writes a long to the underlying output stream as eight bytes, high byte first.

Specified by:
writeLong in interface java.io.DataOutput
Parameters:
v - a long to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeFloat

public final void writeFloat(float v)
                      throws java.io.IOException
Converts the float argument to an int using the floatToIntBits method in class Float, and then writes that int value to the underlying output stream as a 4-byte quantity, high byte first.

Specified by:
writeFloat in interface java.io.DataOutput
Parameters:
v - a float value to be written.
Throws:
java.io.IOException - if an I/O error occurs.
See Also:
Float.floatToIntBits(float)

writeDouble

public final void writeDouble(double v)
                       throws java.io.IOException
Converts the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the underlying output stream as an 8-byte quantity, high byte first.

Specified by:
writeDouble in interface java.io.DataOutput
Parameters:
v - a double value to be written.
Throws:
java.io.IOException - if an I/O error occurs.
See Also:
Double.doubleToLongBits(double)

writeBytes

public final void writeBytes(java.lang.String s)
                      throws java.io.IOException
Writes out the string to the underlying output stream as a sequence of bytes. Each character in the string is written out, in sequence, by discarding its high eight bits.

Specified by:
writeBytes in interface java.io.DataOutput
Parameters:
s - a string of bytes to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeChars

public final void writeChars(java.lang.String s)
                      throws java.io.IOException
Writes a string to the underlying output stream as a sequence of characters. Each character is written to the data output stream as if by the writeChar method.

Specified by:
writeChars in interface java.io.DataOutput
Parameters:
s - a String value to be written.
Throws:
java.io.IOException - if an I/O error occurs.
See Also:
writeChar(int)

writeUTF

public final void writeUTF(java.lang.String str)
                    throws java.io.IOException
Writes a string to the underlying output stream using modified UTF-8 encoding in a machine-independent manner.

First, two bytes are written to the output stream as if by the writeShort method giving the number of bytes to follow. This value is the number of bytes actually written out, not the length of the string. Following the length, each character of the string is output, in sequence, using the modified UTF-8 encoding for the character. If no exception is thrown, the counter written is incremented by the total number of bytes written to the output stream. This will be at least two plus the length of str, and at most two plus thrice the length of str.

Specified by:
writeUTF in interface java.io.DataOutput
Parameters:
str - a string to be written.
Throws:
java.io.IOException - if an I/O error occurs.

getNumWritten

public long getNumWritten()
Report the number of bytes written through this stream.

Returns:
total written byte count