com.twelvemonkeys.io
Class LittleEndianRandomAccessFile

java.lang.Object
  extended by com.twelvemonkeys.io.LittleEndianRandomAccessFile
All Implemented Interfaces:
java.io.DataInput, java.io.DataOutput

public class LittleEndianRandomAccessFile
extends java.lang.Object
implements java.io.DataInput, java.io.DataOutput

A replacement for RandomAccessFile that is capable of reading and writing data in little endian byte order.

Warning: The DataInput and DataOutput interfaces specifies big endian byte order in their documentation. This means that this class is, strictly speaking, not a proper implementation. However, I don't see a reason for the these interfaces to specify the byte order of their underlying representations.

Version:
$Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java#1 $
Author:
Elliotte Rusty Harold, Harald Kuhr, last modified by $Author: haku $
See Also:
LittleEndianDataInputStream, LittleEndianDataOutputStream, RandomAccessFile, DataInput, DataOutput

Constructor Summary
LittleEndianRandomAccessFile(java.io.File pFile, java.lang.String pMode)
           
LittleEndianRandomAccessFile(java.lang.String pName, java.lang.String pMode)
           
 
Method Summary
 void close()
           
 java.nio.channels.FileChannel getChannel()
           
 java.io.FileDescriptor getFD()
           
 long getFilePointer()
           
 long length()
           
 int read()
           
 int read(byte[] b)
           
 int read(byte[] b, int off, int len)
           
 boolean readBoolean()
          Reads a boolean from the underlying input stream by reading a single byte.
 byte readByte()
          Reads a signed byte from the underlying input stream with value between -128 and 127
 char readChar()
          Reads a two byte Unicode char from the underlying input stream in little endian order, low byte first.
 double readDouble()
           
 float readFloat()
           
 void readFully(byte[] b)
           
 void readFully(byte[] b, int off, int len)
           
 int readInt()
          Reads a four byte signed int from the underlying input stream in little endian order, low byte first.
 java.lang.String readLine()
           
 long readLong()
          Reads an eight byte signed int from the underlying input stream in little endian order, low byte first.
 short readShort()
          Reads a two byte signed short from the underlying input stream in little endian order, low byte first.
 int readUnsignedByte()
          Reads an unsigned byte from the underlying input stream with value between 0 and 255
 int readUnsignedShort()
          Reads a two byte unsigned short from the underlying input stream in little endian order, low byte first.
 java.lang.String readUTF()
          Reads a string of no more than 65,535 characters from the underlying input stream using UTF-8 encoding.
 void seek(long pos)
          Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.
 void setLength(long newLength)
           
 int skipBytes(int n)
           
 void write(byte[] b)
           
 void write(byte[] b, int off, int len)
           
 void write(int b)
           
 void writeBoolean(boolean pBoolean)
          Writes a boolean to the underlying output stream as a single byte.
 void writeByte(int pByte)
          Writes out a byte to the underlying output stream
 void writeBytes(java.lang.String pString)
          Writes a string to the underlying output stream as a sequence of bytes.
 void writeChar(int pChar)
          Writes a two byte char to the underlying output stream in little endian order, low byte first.
 void writeChars(java.lang.String pString)
          Writes a string to the underlying output stream as a sequence of characters.
 void writeDouble(double d)
          Writes an 8 byte Java double to the underlying output stream in little endian order.
 void writeFloat(float f)
          Writes a 4 byte Java float to the underlying output stream in little endian order.
 void writeInt(int pInt)
          Writes a four-byte int to the underlying output stream in little endian order, low byte first, high byte last
 void writeLong(long pLong)
          Writes an eight-byte long to the underlying output stream in little endian order, low byte first, high byte last
 void writeShort(int pShort)
          Writes a two byte short to the underlying output stream in little endian order, low byte first.
 void writeUTF(java.lang.String pString)
          Writes a string of no more than 65,535 characters to the underlying output stream using UTF-8 encoding.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LittleEndianRandomAccessFile

public LittleEndianRandomAccessFile(java.lang.String pName,
                                    java.lang.String pMode)
                             throws java.io.FileNotFoundException
Throws:
java.io.FileNotFoundException

LittleEndianRandomAccessFile

public LittleEndianRandomAccessFile(java.io.File pFile,
                                    java.lang.String pMode)
                             throws java.io.FileNotFoundException
Throws:
java.io.FileNotFoundException
Method Detail

close

public void close()
           throws java.io.IOException
Throws:
java.io.IOException

getChannel

public java.nio.channels.FileChannel getChannel()

getFD

public java.io.FileDescriptor getFD()
                             throws java.io.IOException
Throws:
java.io.IOException

getFilePointer

public long getFilePointer()
                    throws java.io.IOException
Throws:
java.io.IOException

length

public long length()
            throws java.io.IOException
Throws:
java.io.IOException

read

public int read()
         throws java.io.IOException
Throws:
java.io.IOException

read

public int read(byte[] b)
         throws java.io.IOException
Throws:
java.io.IOException

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
Throws:
java.io.IOException

readFully

public void readFully(byte[] b)
               throws java.io.IOException
Specified by:
readFully in interface java.io.DataInput
Throws:
java.io.IOException

readFully

public void readFully(byte[] b,
                      int off,
                      int len)
               throws java.io.IOException
Specified by:
readFully in interface java.io.DataInput
Throws:
java.io.IOException

readLine

public java.lang.String readLine()
                          throws java.io.IOException
Specified by:
readLine in interface java.io.DataInput
Throws:
java.io.IOException

readBoolean

public boolean readBoolean()
                    throws java.io.IOException
Reads a boolean from the underlying input stream by reading a single byte. If the byte is zero, false is returned. If the byte is positive, true is returned.

Specified by:
readBoolean in interface java.io.DataInput
Returns:
the boolean value read.
Throws:
java.io.EOFException - if the end of the underlying input stream has been reached
java.io.IOException - if the underlying stream throws an IOException.

readByte

public byte readByte()
              throws java.io.IOException
Reads a signed byte from the underlying input stream with value between -128 and 127

Specified by:
readByte in interface java.io.DataInput
Returns:
the byte value read.
Throws:
java.io.EOFException - if the end of the underlying input stream has been reached
java.io.IOException - if the underlying stream throws an IOException.

readUnsignedByte

public int readUnsignedByte()
                     throws java.io.IOException
Reads an unsigned byte from the underlying input stream with value between 0 and 255

Specified by:
readUnsignedByte in interface java.io.DataInput
Returns:
the byte value read.
Throws:
java.io.EOFException - if the end of the underlying input stream has been reached
java.io.IOException - if the underlying stream throws an IOException.

readShort

public short readShort()
                throws java.io.IOException
Reads a two byte signed short from the underlying input stream in little endian order, low byte first.

Specified by:
readShort in interface java.io.DataInput
Returns:
the short read.
Throws:
java.io.EOFException - if the end of the underlying input stream has been reached
java.io.IOException - if the underlying stream throws an IOException.

readUnsignedShort

public int readUnsignedShort()
                      throws java.io.IOException
Reads a two byte unsigned short from the underlying input stream in little endian order, low byte first.

Specified by:
readUnsignedShort in interface java.io.DataInput
Returns:
the int value of the unsigned short read.
Throws:
java.io.EOFException - if the end of the underlying input stream has been reached
java.io.IOException - if the underlying stream throws an IOException.

readChar

public char readChar()
              throws java.io.IOException
Reads a two byte Unicode char from the underlying input stream in little endian order, low byte first.

Specified by:
readChar in interface java.io.DataInput
Returns:
the int value of the unsigned short read.
Throws:
java.io.EOFException - if the end of the underlying input stream has been reached
java.io.IOException - if the underlying stream throws an IOException.

readInt

public int readInt()
            throws java.io.IOException
Reads a four byte signed int from the underlying input stream in little endian order, low byte first.

Specified by:
readInt in interface java.io.DataInput
Returns:
the int read.
Throws:
java.io.EOFException - if the end of the underlying input stream has been reached
java.io.IOException - if the underlying stream throws an IOException.

readLong

public long readLong()
              throws java.io.IOException
Reads an eight byte signed int from the underlying input stream in little endian order, low byte first.

Specified by:
readLong in interface java.io.DataInput
Returns:
the int read.
Throws:
java.io.EOFException - if the end of the underlying input stream has been reached
java.io.IOException - if the underlying stream throws an IOException.

readUTF

public java.lang.String readUTF()
                         throws java.io.IOException
Reads a string of no more than 65,535 characters from the underlying input stream using UTF-8 encoding. This method first reads a two byte short in big endian order as required by the UTF-8 specification. This gives the number of bytes in the UTF-8 encoded version of the string. Next this many bytes are read and decoded as UTF-8 encoded characters.

Specified by:
readUTF in interface java.io.DataInput
Returns:
the decoded string
Throws:
java.io.UTFDataFormatException - if the string cannot be decoded
java.io.IOException - if the underlying stream throws an IOException.

readDouble

public final double readDouble()
                        throws java.io.IOException
Specified by:
readDouble in interface java.io.DataInput
Returns:
the next eight bytes of this input stream, interpreted as a little endian double.
Throws:
java.io.EOFException - if end of stream occurs before eight bytes have been read.
java.io.IOException - if an I/O error occurs.

readFloat

public final float readFloat()
                      throws java.io.IOException
Specified by:
readFloat in interface java.io.DataInput
Returns:
the next four bytes of this input stream, interpreted as a little endian int.
Throws:
java.io.EOFException - if end of stream occurs before four bytes have been read.
java.io.IOException - if an I/O error occurs.

seek

public void seek(long pos)
          throws java.io.IOException
Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs. The offset may be set beyond the end of the file. Setting the offset beyond the end of the file does not change the file length. The file length will change only by writing after the offset has been set beyond the end of the file.

Parameters:
pos - the offset position, measured in bytes from the beginning of the file, at which to set the file pointer.
Throws:
java.io.IOException - if pos is less than 0 or if an I/O error occurs.

setLength

public void setLength(long newLength)
               throws java.io.IOException
Throws:
java.io.IOException

skipBytes

public int skipBytes(int n)
              throws java.io.IOException
Specified by:
skipBytes in interface java.io.DataInput
Throws:
java.io.IOException

write

public void write(byte[] b)
           throws java.io.IOException
Specified by:
write in interface java.io.DataOutput
Throws:
java.io.IOException

write

public void write(byte[] b,
                  int off,
                  int len)
           throws java.io.IOException
Specified by:
write in interface java.io.DataOutput
Throws:
java.io.IOException

write

public void write(int b)
           throws java.io.IOException
Specified by:
write in interface java.io.DataOutput
Throws:
java.io.IOException

writeBoolean

public void writeBoolean(boolean pBoolean)
                  throws java.io.IOException
Writes a boolean to the underlying output stream as a single byte. If the argument is true, the byte value 1 is written. If the argument is false, the byte value 0 in written.

Specified by:
writeBoolean in interface java.io.DataOutput
Parameters:
pBoolean - the boolean value to be written.
Throws:
java.io.IOException - if the underlying stream throws an IOException.

writeByte

public void writeByte(int pByte)
               throws java.io.IOException
Writes out a byte to the underlying output stream

Specified by:
writeByte in interface java.io.DataOutput
Parameters:
pByte - the byte value to be written.
Throws:
java.io.IOException - if the underlying stream throws an IOException.

writeShort

public void writeShort(int pShort)
                throws java.io.IOException
Writes a two byte short to the underlying output stream in little endian order, low byte first.

Specified by:
writeShort in interface java.io.DataOutput
Parameters:
pShort - the short to be written.
Throws:
java.io.IOException - if the underlying stream throws an IOException.

writeChar

public void writeChar(int pChar)
               throws java.io.IOException
Writes a two byte char to the underlying output stream in little endian order, low byte first.

Specified by:
writeChar in interface java.io.DataOutput
Parameters:
pChar - the char value to be written.
Throws:
java.io.IOException - if the underlying stream throws an IOException.

writeInt

public void writeInt(int pInt)
              throws java.io.IOException
Writes a four-byte int to the underlying output stream in little endian order, low byte first, high byte last

Specified by:
writeInt in interface java.io.DataOutput
Parameters:
pInt - the int to be written.
Throws:
java.io.IOException - if the underlying stream throws an IOException.

writeLong

public void writeLong(long pLong)
               throws java.io.IOException
Writes an eight-byte long to the underlying output stream in little endian order, low byte first, high byte last

Specified by:
writeLong in interface java.io.DataOutput
Parameters:
pLong - the long to be written.
Throws:
java.io.IOException - if the underlying stream throws an IOException.

writeFloat

public final void writeFloat(float f)
                      throws java.io.IOException
Writes a 4 byte Java float to the underlying output stream in little endian order.

Specified by:
writeFloat in interface java.io.DataOutput
Parameters:
f - the float value to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeDouble

public final void writeDouble(double d)
                       throws java.io.IOException
Writes an 8 byte Java double to the underlying output stream in little endian order.

Specified by:
writeDouble in interface java.io.DataOutput
Parameters:
d - the double value to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeBytes

public void writeBytes(java.lang.String pString)
                throws java.io.IOException
Writes a string to the underlying output stream as a sequence of bytes. Each character is written to the data output stream as if by the writeByte() method.

Specified by:
writeBytes in interface java.io.DataOutput
Parameters:
pString - the String value to be written.
Throws:
java.io.IOException - if the underlying stream throws an IOException.
See Also:
writeByte(int), file

writeChars

public void writeChars(java.lang.String pString)
                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:
pString - a String value to be written.
Throws:
java.io.IOException - if the underlying stream throws an IOException.
See Also:
writeChar(int), file

writeUTF

public void writeUTF(java.lang.String pString)
              throws java.io.IOException
Writes a string of no more than 65,535 characters to the underlying output stream using UTF-8 encoding. This method first writes a two byte short in big endian order as required by the UTF-8 specification. This gives the number of bytes in the UTF-8 encoded version of the string, not the number of characters in the string. Next each character of the string is written using the UTF-8 encoding for the character.

Specified by:
writeUTF in interface java.io.DataOutput
Parameters:
pString - the string to be written.
Throws:
java.io.UTFDataFormatException - if the string is longer than 65,535 characters.
java.io.IOException - if the underlying stream throws an IOException.


Copyright © 2014. All Rights Reserved.