Package org.apache.fontbox.ttf
Class BufferedRandomAccessFile
java.lang.Object
java.io.RandomAccessFile
org.apache.fontbox.ttf.BufferedRandomAccessFile
- All Implemented Interfaces:
Closeable
,DataInput
,DataOutput
,AutoCloseable
This class is a version of the one published at
https://code.google.com/p/jmzreader/wiki/BufferedRandomAccessFile augmented to handle unsigned
bytes. The original class is published under Apache 2.0 license. Fix is marked below
This is an optimized version of the RandomAccessFile class as described by Nick Zhang on
JavaWorld.com. The article can be found at
http://www.javaworld.com/javaworld/javatips/jw-javatip26.html
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionBufferedRandomAccessFile
(File file, String mode, int bufsize) Creates a new instance of the BufferedRandomAccessFile.BufferedRandomAccessFile
(String filename, String mode, int bufsize) Creates a new instance of the BufferedRandomAccessFile. -
Method Summary
Methods inherited from class java.io.RandomAccessFile
close, getChannel, getFD, length, read, readBoolean, readByte, readChar, readDouble, readFloat, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedShort, readUTF, setLength, skipBytes, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFloat, writeInt, writeLong, writeShort, writeUTF
-
Field Details
-
buffer
private final byte[] bufferUses a byte instead of a char buffer for efficiency reasons. -
bufend
private int bufend -
bufpos
private int bufpos -
realpos
private long realposThe position inside the actual file.
-
-
Constructor Details
-
BufferedRandomAccessFile
public BufferedRandomAccessFile(String filename, String mode, int bufsize) throws FileNotFoundException Creates a new instance of the BufferedRandomAccessFile.- Parameters:
filename
- The path of the file to open.mode
- Specifies the mode to use ("r", "rw", etc.) See the BufferedLineReader documentation for more information.bufsize
- The buffer size (in bytes) to use.- Throws:
FileNotFoundException
- If the mode is "r" but the given string does not denote an existing regular file, or if the mode begins with "rw" but the given string does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file.
-
BufferedRandomAccessFile
Creates a new instance of the BufferedRandomAccessFile.- Parameters:
file
- The file to open.mode
- Specifies the mode to use ("r", "rw", etc.) See the BufferedLineReader documentation for more information.bufsize
- The buffer size (in bytes) to use.- Throws:
FileNotFoundException
- If the mode is "r" but the given file path does not denote an existing regular file, or if the mode begins with "rw" but the given file path does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file.
-
-
Method Details
-
read
- Overrides:
read
in classRandomAccessFile
- Throws:
IOException
-
fillBuffer
Reads as much bytes as possible into the internal buffer.- Returns:
- The total number of bytes read into the buffer, or -1 if there is no more data because the end of the file has been reached.
- Throws:
IOException
- If the first byte cannot be read for any reason other than end of file, or if the random access file has been closed, or if some other I/O error occurs.
-
invalidate
Clears the local buffer.- Throws:
IOException
- If an I/O error occurs.
-
read
- Overrides:
read
in classRandomAccessFile
- Throws:
IOException
-
getFilePointer
- Overrides:
getFilePointer
in classRandomAccessFile
- Throws:
IOException
-
seek
- Overrides:
seek
in classRandomAccessFile
- Throws:
IOException
-