Package com.itextpdf.text.pdf
Class RandomAccessFileOrArray
- java.lang.Object
-
- com.itextpdf.text.pdf.RandomAccessFileOrArray
-
- All Implemented Interfaces:
java.io.DataInput
public class RandomAccessFileOrArray extends java.lang.Object implements java.io.DataInputIntended to be layered on top of a low level RandomAccessSource object. Provides functionality useful during parsing:- tracks current position in the file
- allows single byte pushback
- allows reading of multi-byte data structures (int, long, String) for both Big and Little Endian representations
- allows creation of independent 'views' of the underlying data source
-
-
Field Summary
Fields Modifier and Type Field Description private bytebackthe pushed back byte, if anyprivate RandomAccessSourcebyteSourceThe source that backs this objectprivate longbyteSourcePositionThe physical location in the underlying byte source.private booleanisBackWhether there is a pushed back byte
-
Constructor Summary
Constructors Constructor Description RandomAccessFileOrArray(byte[] arrayIn)Deprecated.RandomAccessFileOrArray(RandomAccessSource byteSource)Creates a RandomAccessFileOrArray that wraps the specified byte source.RandomAccessFileOrArray(RandomAccessFileOrArray source)Deprecated.usecreateView()insteadRandomAccessFileOrArray(java.io.InputStream is)Deprecated.RandomAccessFileOrArray(java.lang.String filename)Deprecated.useRandomAccessFileOrArray(RandomAccessSource)insteadRandomAccessFileOrArray(java.lang.String filename, boolean forceRead, boolean plainRandomAccess)Deprecated.RandomAccessFileOrArray(java.net.URL url)Deprecated.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidclose()RandomAccessSourcecreateSourceView()RandomAccessFileOrArraycreateView()Creates an independent view of this object (with it's own file pointer and pushback queue).protected RandomAccessSourcegetByteSource()Deprecated.longgetFilePointer()longlength()voidpushBack(byte b)Pushes a byte back.intread()Reads a single byteintread(byte[] b)intread(byte[] b, int off, int len)booleanreadBoolean()bytereadByte()charreadChar()charreadCharLE()Reads a Unicode character from this stream in little-endian order.doublereadDouble()doublereadDoubleLE()floatreadFloat()floatreadFloatLE()voidreadFully(byte[] b)voidreadFully(byte[] b, int off, int len)intreadInt()intreadIntLE()Reads a signed 32-bit integer from this stream in little-endian order.java.lang.StringreadLine()longreadLong()longreadLongLE()shortreadShort()shortreadShortLE()Reads a signed 16-bit number from this stream in little-endian order.java.lang.StringreadString(int length, java.lang.String encoding)Reads aStringfrom the font file as bytes using the given encoding.intreadUnsignedByte()longreadUnsignedInt()Reads an unsigned 32-bit integer from this stream.longreadUnsignedIntLE()intreadUnsignedShort()intreadUnsignedShortLE()Reads an unsigned 16-bit number from this stream in little-endian order.java.lang.StringreadUTF()voidreOpen()Deprecated.voidseek(long pos)longskip(long n)intskipBytes(int n)
-
-
-
Field Detail
-
byteSource
private final RandomAccessSource byteSource
The source that backs this object
-
byteSourcePosition
private long byteSourcePosition
The physical location in the underlying byte source.
-
back
private byte back
the pushed back byte, if any
-
isBack
private boolean isBack
Whether there is a pushed back byte
-
-
Constructor Detail
-
RandomAccessFileOrArray
@Deprecated public RandomAccessFileOrArray(java.lang.String filename) throws java.io.IOExceptionDeprecated.useRandomAccessFileOrArray(RandomAccessSource)instead- Parameters:
filename-- Throws:
java.io.IOException
-
RandomAccessFileOrArray
@Deprecated public RandomAccessFileOrArray(RandomAccessFileOrArray source)
Deprecated.usecreateView()insteadCreates an independent view of the specified source. Closing the new object will not close the source. Closing the source will have adverse effect on the behavior of the new view.- Parameters:
source- the source for the new independent view
-
RandomAccessFileOrArray
public RandomAccessFileOrArray(RandomAccessSource byteSource)
Creates a RandomAccessFileOrArray that wraps the specified byte source. The byte source will be closed when this RandomAccessFileOrArray is closed.- Parameters:
byteSource- the byte source to wrap
-
RandomAccessFileOrArray
@Deprecated public RandomAccessFileOrArray(java.lang.String filename, boolean forceRead, boolean plainRandomAccess) throws java.io.IOExceptionDeprecated.Constructs a new RandomAccessFileOrArrayObject- Parameters:
filename- the file to open (can be a file system file or one of the following url strings: file://, http://, https://, jar:, wsjar:, vfszip:forceRead- if true, the entire file will be read into memoryplainRandomAccess- if true, a regular RandomAccessFile is used to access the file contents. If false, a memory mapped file will be used, unless the file cannot be mapped into memory, in which case regular RandomAccessFile will be used- Throws:
java.io.IOException- if there is a failure opening or reading the file
-
RandomAccessFileOrArray
@Deprecated public RandomAccessFileOrArray(java.net.URL url) throws java.io.IOExceptionDeprecated.- Parameters:
url-- Throws:
java.io.IOException
-
RandomAccessFileOrArray
@Deprecated public RandomAccessFileOrArray(java.io.InputStream is) throws java.io.IOExceptionDeprecated.- Parameters:
is-- Throws:
java.io.IOException
-
RandomAccessFileOrArray
@Deprecated public RandomAccessFileOrArray(byte[] arrayIn)
Deprecated.- Parameters:
arrayIn- byte[]- Throws:
java.io.IOException
-
-
Method Detail
-
createView
public RandomAccessFileOrArray createView()
Creates an independent view of this object (with it's own file pointer and pushback queue). Closing the new object will not close this object. Closing this object will have adverse effect on the view.- Returns:
- the new view
-
createSourceView
public RandomAccessSource createSourceView()
-
getByteSource
@Deprecated protected RandomAccessSource getByteSource()
Deprecated.
-
pushBack
public void pushBack(byte b)
Pushes a byte back. The next get() will return this byte instead of the value from the underlying data source- Parameters:
b- the byte to push
-
read
public int read() throws java.io.IOExceptionReads a single byte- Returns:
- the byte, or -1 if EOF is reached
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException- Throws:
java.io.IOException
-
read
public int read(byte[] b) 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
-
skip
public long skip(long n) 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
-
reOpen
@Deprecated public void reOpen() throws java.io.IOExceptionDeprecated.- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException- Throws:
java.io.IOException
-
length
public long length() throws java.io.IOException- Throws:
java.io.IOException
-
seek
public void seek(long pos) throws java.io.IOException- Throws:
java.io.IOException
-
getFilePointer
public long getFilePointer() throws java.io.IOException- Throws:
java.io.IOException
-
readBoolean
public boolean readBoolean() throws java.io.IOException- Specified by:
readBooleanin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readByte
public byte readByte() throws java.io.IOException- Specified by:
readBytein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readUnsignedByte
public int readUnsignedByte() throws java.io.IOException- Specified by:
readUnsignedBytein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readShort
public short readShort() throws java.io.IOException- Specified by:
readShortin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readShortLE
public final short readShortLE() throws java.io.IOExceptionReads a signed 16-bit number from this stream in little-endian order. The method reads two bytes from this stream, starting at the current stream pointer. If the two bytes read, in order, areb1andb2, where each of the two values is between0and255, inclusive, then the result is equal to:(short)((b2 << 8) | b1)This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
- Returns:
- the next two bytes of this stream, interpreted as a signed 16-bit number.
- Throws:
java.io.EOFException- if this stream reaches the end before reading two bytes.java.io.IOException- if an I/O error occurs.
-
readUnsignedShort
public int readUnsignedShort() throws java.io.IOException- Specified by:
readUnsignedShortin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readUnsignedShortLE
public final int readUnsignedShortLE() throws java.io.IOExceptionReads an unsigned 16-bit number from this stream in little-endian order. This method reads two bytes from the stream, starting at the current stream pointer. If the bytes read, in order, areb1andb2, where0 <= b1, b2 <= 255, then the result is equal to:(b2 << 8) | b1This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
- Returns:
- the next two bytes of this stream, interpreted as an unsigned 16-bit integer.
- Throws:
java.io.EOFException- if this stream reaches the end before reading two bytes.java.io.IOException- if an I/O error occurs.
-
readChar
public char readChar() throws java.io.IOException- Specified by:
readCharin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readCharLE
public final char readCharLE() throws java.io.IOExceptionReads a Unicode character from this stream in little-endian order. This method reads two bytes from the stream, starting at the current stream pointer. If the bytes read, in order, areb1andb2, where0 <= b1, b2 <= 255, then the result is equal to:(char)((b2 << 8) | b1)This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
- Returns:
- the next two bytes of this stream as a Unicode character.
- Throws:
java.io.EOFException- if this stream reaches the end before reading two bytes.java.io.IOException- if an I/O error occurs.
-
readInt
public int readInt() throws java.io.IOException- Specified by:
readIntin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readIntLE
public final int readIntLE() throws java.io.IOExceptionReads a signed 32-bit integer from this stream in little-endian order. This method reads 4 bytes from the stream, starting at the current stream pointer. If the bytes read, in order, areb1,b2,b3, andb4, where0 <= b1, b2, b3, b4 <= 255, then the result is equal to:(b4 << 24) | (b3 << 16) + (b2 << 8) + b1This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
- Returns:
- the next four bytes of this stream, interpreted as an
int. - Throws:
java.io.EOFException- if this stream reaches the end before reading four bytes.java.io.IOException- if an I/O error occurs.
-
readUnsignedInt
public final long readUnsignedInt() throws java.io.IOExceptionReads an unsigned 32-bit integer from this stream. This method reads 4 bytes from the stream, starting at the current stream pointer. If the bytes read, in order, areb1,b2,b3, andb4, where0 <= b1, b2, b3, b4 <= 255, then the result is equal to:(b1 << 24) | (b2 << 16) + (b3 << 8) + b4This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
- Returns:
- the next four bytes of this stream, interpreted as a
long. - Throws:
java.io.EOFException- if this stream reaches the end before reading four bytes.java.io.IOException- if an I/O error occurs.
-
readUnsignedIntLE
public final long readUnsignedIntLE() throws java.io.IOException- Throws:
java.io.IOException
-
readLong
public long readLong() throws java.io.IOException- Specified by:
readLongin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readLongLE
public final long readLongLE() throws java.io.IOException- Throws:
java.io.IOException
-
readFloat
public float readFloat() throws java.io.IOException- Specified by:
readFloatin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readFloatLE
public final float readFloatLE() throws java.io.IOException- Throws:
java.io.IOException
-
readDouble
public double readDouble() throws java.io.IOException- Specified by:
readDoublein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readDoubleLE
public final double readDoubleLE() throws java.io.IOException- Throws:
java.io.IOException
-
readLine
public java.lang.String readLine() throws java.io.IOException- Specified by:
readLinein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readUTF
public java.lang.String readUTF() throws java.io.IOException- Specified by:
readUTFin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readString
public java.lang.String readString(int length, java.lang.String encoding) throws java.io.IOExceptionReads aStringfrom the font file as bytes using the given encoding.- Parameters:
length- the length of bytes to readencoding- the given encoding- Returns:
- the
Stringread - Throws:
java.io.IOException- the font file could not be read
-
-