Package com.twelvemonkeys.io
Class LittleEndianRandomAccessFile
- java.lang.Object
-
- 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.DataOutputA replacement forRandomAccessFilethat is capable of reading and writing data in little endian byte order.Warning: The
DataInputandDataOutputinterfaces 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 $
- See Also:
LittleEndianDataInputStream,LittleEndianDataOutputStream,RandomAccessFile,DataInput,DataOutput
-
-
Field Summary
Fields Modifier and Type Field Description private java.io.RandomAccessFilefile
-
Constructor Summary
Constructors Constructor Description LittleEndianRandomAccessFile(java.io.File pFile, java.lang.String pMode)LittleEndianRandomAccessFile(java.lang.String pName, java.lang.String pMode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()java.nio.channels.FileChannelgetChannel()java.io.FileDescriptorgetFD()longgetFilePointer()longlength()intread()intread(byte[] b)intread(byte[] b, int off, int len)booleanreadBoolean()Reads abooleanfrom the underlying input stream by reading a single byte.bytereadByte()Reads a signedbytefrom the underlying input stream with value between -128 and 127charreadChar()Reads a two byte Unicodecharfrom the underlying input stream in little endian order, low byte first.doublereadDouble()floatreadFloat()voidreadFully(byte[] b)voidreadFully(byte[] b, int off, int len)intreadInt()Reads a four byte signedintfrom the underlying input stream in little endian order, low byte first.java.lang.StringreadLine()longreadLong()Reads an eight byte signedintfrom the underlying input stream in little endian order, low byte first.shortreadShort()Reads a two byte signedshortfrom the underlying input stream in little endian order, low byte first.intreadUnsignedByte()Reads an unsignedbytefrom the underlying input stream with value between 0 and 255intreadUnsignedShort()Reads a two byte unsignedshortfrom the underlying input stream in little endian order, low byte first.java.lang.StringreadUTF()Reads a string of no more than 65,535 characters from the underlying input stream using UTF-8 encoding.voidseek(long pos)Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.voidsetLength(long newLength)intskipBytes(int n)voidwrite(byte[] b)voidwrite(byte[] b, int off, int len)voidwrite(int b)voidwriteBoolean(boolean pBoolean)Writes abooleanto the underlying output stream as a single byte.voidwriteByte(int pByte)Writes out abyteto the underlying output streamvoidwriteBytes(java.lang.String pString)Writes a string to the underlying output stream as a sequence of bytes.voidwriteChar(int pChar)Writes a two bytecharto the underlying output stream in little endian order, low byte first.voidwriteChars(java.lang.String pString)Writes a string to the underlying output stream as a sequence of characters.voidwriteDouble(double d)Writes an 8 byte Java double to the underlying output stream in little endian order.voidwriteFloat(float f)Writes a 4 byte Java float to the underlying output stream in little endian order.voidwriteInt(int pInt)Writes a four-byteintto the underlying output stream in little endian order, low byte first, high byte lastvoidwriteLong(long pLong)Writes an eight-bytelongto the underlying output stream in little endian order, low byte first, high byte lastvoidwriteShort(int pShort)Writes a two byteshortto the underlying output stream in little endian order, low byte first.voidwriteUTF(java.lang.String pString)Writes a string of no more than 65,535 characters to the underlying output stream using UTF-8 encoding.
-
-
-
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:
readFullyin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readFully
public void readFully(byte[] b, int off, int len) throws java.io.IOException- Specified by:
readFullyin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readLine
public java.lang.String readLine() throws java.io.IOException- Specified by:
readLinein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readBoolean
public boolean readBoolean() throws java.io.IOExceptionReads abooleanfrom 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:
readBooleanin interfacejava.io.DataInput- Returns:
- the
booleanvalue read. - Throws:
java.io.EOFException- if the end of the underlying input stream has been reachedjava.io.IOException- if the underlying stream throws an IOException.
-
readByte
public byte readByte() throws java.io.IOExceptionReads a signedbytefrom the underlying input stream with value between -128 and 127- Specified by:
readBytein interfacejava.io.DataInput- Returns:
- the
bytevalue read. - Throws:
java.io.EOFException- if the end of the underlying input stream has been reachedjava.io.IOException- if the underlying stream throws an IOException.
-
readUnsignedByte
public int readUnsignedByte() throws java.io.IOExceptionReads an unsignedbytefrom the underlying input stream with value between 0 and 255- Specified by:
readUnsignedBytein interfacejava.io.DataInput- Returns:
- the
bytevalue read. - Throws:
java.io.EOFException- if the end of the underlying input stream has been reachedjava.io.IOException- if the underlying stream throws an IOException.
-
readShort
public short readShort() throws java.io.IOExceptionReads a two byte signedshortfrom the underlying input stream in little endian order, low byte first.- Specified by:
readShortin interfacejava.io.DataInput- Returns:
- the
shortread. - Throws:
java.io.EOFException- if the end of the underlying input stream has been reachedjava.io.IOException- if the underlying stream throws an IOException.
-
readUnsignedShort
public int readUnsignedShort() throws java.io.IOExceptionReads a two byte unsignedshortfrom the underlying input stream in little endian order, low byte first.- Specified by:
readUnsignedShortin interfacejava.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 reachedjava.io.IOException- if the underlying stream throws an IOException.
-
readChar
public char readChar() throws java.io.IOExceptionReads a two byte Unicodecharfrom the underlying input stream in little endian order, low byte first.- Specified by:
readCharin interfacejava.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 reachedjava.io.IOException- if the underlying stream throws an IOException.
-
readInt
public int readInt() throws java.io.IOExceptionReads a four byte signedintfrom the underlying input stream in little endian order, low byte first.- Specified by:
readIntin interfacejava.io.DataInput- Returns:
- the
intread. - Throws:
java.io.EOFException- if the end of the underlying input stream has been reachedjava.io.IOException- if the underlying stream throws an IOException.
-
readLong
public long readLong() throws java.io.IOExceptionReads an eight byte signedintfrom the underlying input stream in little endian order, low byte first.- Specified by:
readLongin interfacejava.io.DataInput- Returns:
- the
intread. - Throws:
java.io.EOFException- if the end of the underlying input stream has been reachedjava.io.IOException- if the underlying stream throws an IOException.
-
readUTF
public java.lang.String readUTF() throws java.io.IOExceptionReads 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:
readUTFin interfacejava.io.DataInput- Returns:
- the decoded string
- Throws:
java.io.UTFDataFormatException- if the string cannot be decodedjava.io.IOException- if the underlying stream throws an IOException.
-
readDouble
public final double readDouble() throws java.io.IOException- Specified by:
readDoublein interfacejava.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:
readFloatin interfacejava.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.IOExceptionSets 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- ifposis less than0or 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:
skipBytesin interfacejava.io.DataInput- Throws:
java.io.IOException
-
write
public void write(byte[] b) throws java.io.IOException- Specified by:
writein interfacejava.io.DataOutput- Throws:
java.io.IOException
-
write
public void write(byte[] b, int off, int len) throws java.io.IOException- Specified by:
writein interfacejava.io.DataOutput- Throws:
java.io.IOException
-
write
public void write(int b) throws java.io.IOException- Specified by:
writein interfacejava.io.DataOutput- Throws:
java.io.IOException
-
writeBoolean
public void writeBoolean(boolean pBoolean) throws java.io.IOExceptionWrites abooleanto 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 value0in written.- Specified by:
writeBooleanin interfacejava.io.DataOutput- Parameters:
pBoolean- thebooleanvalue to be written.- Throws:
java.io.IOException- if the underlying stream throws an IOException.
-
writeByte
public void writeByte(int pByte) throws java.io.IOExceptionWrites out abyteto the underlying output stream- Specified by:
writeBytein interfacejava.io.DataOutput- Parameters:
pByte- thebytevalue to be written.- Throws:
java.io.IOException- if the underlying stream throws an IOException.
-
writeShort
public void writeShort(int pShort) throws java.io.IOExceptionWrites a two byteshortto the underlying output stream in little endian order, low byte first.- Specified by:
writeShortin interfacejava.io.DataOutput- Parameters:
pShort- theshortto be written.- Throws:
java.io.IOException- if the underlying stream throws an IOException.
-
writeChar
public void writeChar(int pChar) throws java.io.IOExceptionWrites a two bytecharto the underlying output stream in little endian order, low byte first.- Specified by:
writeCharin interfacejava.io.DataOutput- Parameters:
pChar- thecharvalue to be written.- Throws:
java.io.IOException- if the underlying stream throws an IOException.
-
writeInt
public void writeInt(int pInt) throws java.io.IOExceptionWrites a four-byteintto the underlying output stream in little endian order, low byte first, high byte last- Specified by:
writeIntin interfacejava.io.DataOutput- Parameters:
pInt- theintto be written.- Throws:
java.io.IOException- if the underlying stream throws an IOException.
-
writeLong
public void writeLong(long pLong) throws java.io.IOExceptionWrites an eight-bytelongto the underlying output stream in little endian order, low byte first, high byte last- Specified by:
writeLongin interfacejava.io.DataOutput- Parameters:
pLong- thelongto be written.- Throws:
java.io.IOException- if the underlying stream throws an IOException.
-
writeFloat
public final void writeFloat(float f) throws java.io.IOExceptionWrites a 4 byte Java float to the underlying output stream in little endian order.- Specified by:
writeFloatin interfacejava.io.DataOutput- Parameters:
f- thefloatvalue to be written.- Throws:
java.io.IOException- if an I/O error occurs.
-
writeDouble
public final void writeDouble(double d) throws java.io.IOExceptionWrites an 8 byte Java double to the underlying output stream in little endian order.- Specified by:
writeDoublein interfacejava.io.DataOutput- Parameters:
d- thedoublevalue to be written.- Throws:
java.io.IOException- if an I/O error occurs.
-
writeBytes
public void writeBytes(java.lang.String pString) throws java.io.IOExceptionWrites a string to the underlying output stream as a sequence of bytes. Each character is written to the data output stream as if by thewriteByte()method.- Specified by:
writeBytesin interfacejava.io.DataOutput- Parameters:
pString- theStringvalue 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.IOExceptionWrites a string to the underlying output stream as a sequence of characters. Each character is written to the data output stream as if by thewriteCharmethod.- Specified by:
writeCharsin interfacejava.io.DataOutput- Parameters:
pString- aStringvalue 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.IOExceptionWrites 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:
writeUTFin interfacejava.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.
-
-