Methods Summary |
---|
public java.lang.Object | clone()Returns a clone of this stream.
Clones of a stream access the same data, and are positioned at the same
point as the stream they were cloned from.
Expert: Subclasses must ensure that clones may be positioned at
different points in the input from each other and from the stream they
were cloned from.
IndexInput clone = null;
try {
clone = (IndexInput)super.clone();
} catch (CloneNotSupportedException e) {}
clone.chars = null;
return clone;
|
public abstract void | close()Closes the stream to futher operations.
|
public abstract long | getFilePointer()Returns the current position in this file, where the next read will
occur.
|
public abstract long | length()The number of bytes in the file.
|
public abstract byte | readByte()Reads and returns a single byte.
|
public abstract void | readBytes(byte[] b, int offset, int len)Reads a specified number of bytes into an array at the specified offset.
|
public void | readChars(char[] buffer, int start, int length)Reads UTF-8 encoded characters into an array.
final int end = start + length;
for (int i = start; i < end; i++) {
byte b = readByte();
if ((b & 0x80) == 0)
buffer[i] = (char)(b & 0x7F);
else if ((b & 0xE0) != 0xE0) {
buffer[i] = (char)(((b & 0x1F) << 6)
| (readByte() & 0x3F));
} else
buffer[i] = (char)(((b & 0x0F) << 12)
| ((readByte() & 0x3F) << 6)
| (readByte() & 0x3F));
}
|
public int | readInt()Reads four bytes and returns an int.
return ((readByte() & 0xFF) << 24) | ((readByte() & 0xFF) << 16)
| ((readByte() & 0xFF) << 8) | (readByte() & 0xFF);
|
public long | readLong()Reads eight bytes and returns a long.
return (((long)readInt()) << 32) | (readInt() & 0xFFFFFFFFL);
|
public java.lang.String | readString()Reads a string.
int length = readVInt();
if (chars == null || length > chars.length)
chars = new char[length];
readChars(chars, 0, length);
return new String(chars, 0, length);
|
public int | readVInt()Reads an int stored in variable-length format. Reads between one and
five bytes. Smaller values take fewer bytes. Negative numbers are not
supported.
byte b = readByte();
int i = b & 0x7F;
for (int shift = 7; (b & 0x80) != 0; shift += 7) {
b = readByte();
i |= (b & 0x7F) << shift;
}
return i;
|
public long | readVLong()Reads a long stored in variable-length format. Reads between one and
nine bytes. Smaller values take fewer bytes. Negative numbers are not
supported.
byte b = readByte();
long i = b & 0x7F;
for (int shift = 7; (b & 0x80) != 0; shift += 7) {
b = readByte();
i |= (b & 0x7FL) << shift;
}
return i;
|
public abstract void | seek(long pos)Sets current position in this file, where the next read will occur.
|
public void | skipChars(int length)Expert
Similar to {@link #readChars(char[], int, int)} but does not do any conversion operations on the bytes it is reading in. It still
has to invoke {@link #readByte()} just as {@link #readChars(char[], int, int)} does, but it does not need a buffer to store anything
and it does not have to do any of the bitwise operations, since we don't actually care what is in the byte except to determine
how many more bytes to read
for (int i = 0; i < length; i++) {
byte b = readByte();
if ((b & 0x80) == 0){
//do nothing, we only need one byte
}
else if ((b & 0xE0) != 0xE0) {
readByte();//read an additional byte
} else{
//read two additional bytes.
readByte();
readByte();
}
}
|