Package org.eclipse.birt.core.archive
Class RAFolderInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.eclipse.birt.core.archive.RAInputStream
-
- org.eclipse.birt.core.archive.RAFolderInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public class RAFolderInputStream extends RAInputStream
RAInputStream implementation for folder based report archive
-
-
Constructor Summary
Constructors Constructor Description RAFolderInputStream(java.io.File file)
RAFolderInputStream(java.util.HashSet<RAFolderInputStream> manager, java.io.File file)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
Returns the number of bytes that can be read (or skipped over) from this random access input stream without blocking by the next caller of a method for this input stream.void
close()
Close the streamjava.lang.String
getName()
long
getOffset()
long
getStreamLength()
long
length()
int
read()
The same behavior as InputStream.read().
Reads the next byte of data from the input stream.int
read(byte[] b, int off, int len)
The same behavior as InputStream.read(byte b[], int off, int len ).
Reads up to len bytes of data from the input stream into an array of bytes.void
readFully(byte[] b, int off, int len)
The same behavior as RandomAccessFile.readFully(byte b[], int off, int len) Reads exactlylen
bytes from this file into the byte array, starting at the current file pointer.int
readInt()
Instead of calling randomAccessFile.readInt, we implement it in a better way (much better performace.) The external behavior is the same as RandomAccessFile.readInt().long
readLong()
Reads a signed 64-bit integer from this file.void
refresh()
void
seek(long localPos)
Move the file pointer to the new location in the stream
-
-
-
Constructor Detail
-
RAFolderInputStream
public RAFolderInputStream(java.io.File file) throws java.io.IOException
- Throws:
java.io.IOException
-
RAFolderInputStream
public RAFolderInputStream(java.util.HashSet<RAFolderInputStream> manager, java.io.File file) throws java.io.IOException
- Parameters:
file
- - a regular file (i.e. stream) in the folder- Throws:
java.io.FileNotFoundException
java.io.IOException
-
-
Method Detail
-
getName
public java.lang.String getName()
-
refresh
public void refresh() throws java.io.IOException
- Specified by:
refresh
in classRAInputStream
- Throws:
java.io.IOException
-
read
public int read() throws java.io.IOException
The same behavior as InputStream.read().
Reads the next byte of data from the input stream. The value byte is returned as anint
in the range0
to255
. If no byte is available because the end of the stream has been reached, the value-1
is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.A subclass must provide an implementation of this method.
- Specified by:
read
in classjava.io.InputStream
- Returns:
- the next byte of data, or
-1
if the end of the stream is reached. - Throws:
java.io.IOException
- if an I/O error occurs.
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
The same behavior as InputStream.read(byte b[], int off, int len ).
Reads up to len bytes of data from the input stream into an array of bytes. If no byte is available because the end of the stream has been reached, the value-1
is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.A subclass must provide an implementation of this method.
- Overrides:
read
in classjava.io.InputStream
- Returns:
- the total number of bytes read into the buffer, or
-1
if there is no more data because the end of the stream has been reached - Throws:
java.io.IOException
- if an I/O error occurs.
-
readInt
public int readInt() throws java.io.IOException
Instead of calling randomAccessFile.readInt, we implement it in a better way (much better performace.) The external behavior is the same as RandomAccessFile.readInt().
Reads a signed 32-bit integer from this file. This method reads 4 bytes from the file, starting at the current file 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) + b4
This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readInt
in classRAInputStream
- 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.
-
readLong
public long readLong() throws java.io.IOException
Reads a signed 64-bit integer from this file. This method reads eight bytes from the file, starting at the current file pointer. If the bytes read, in order, areb1
,b2
,b3
,b4
,b5
,b6
,b7
, andb8,
where:0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,
then the result is equal to:
((long) b1 << 56) + ((long) b2 << 48) + ((long) b3 << 40) + ((long) b4 << 32) + ((long) b5 << 24) + ((long) b6 << 16) + ((long) b7 << 8) + b8
This method blocks until the eight bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readLong
in classRAInputStream
- Returns:
- the next eight bytes of this file, interpreted as a
long
. - Throws:
java.io.EOFException
- if this file reaches the end before reading eight bytes.java.io.IOException
- if an I/O error occurs.
-
readFully
public final void readFully(byte[] b, int off, int len) throws java.io.IOException
The same behavior as RandomAccessFile.readFully(byte b[], int off, int len) Reads exactlylen
bytes from this file into the byte array, starting at the current file pointer. This method reads repeatedly from the file until the requested number of bytes are read. This method blocks until the requested number of bytes are read, the end of the stream is detected, or an exception is thrown.- Specified by:
readFully
in classRAInputStream
- Parameters:
b
- the buffer into which the data is read.off
- the start offset of the data.len
- the number of bytes to read.- Throws:
java.io.EOFException
- if this file reaches the end before reading all the bytes.java.io.IOException
- if an I/O error occurs.
-
getStreamLength
public long getStreamLength() throws java.io.IOException
- Returns:
- the length of the stream
- Throws:
java.io.IOException
-
seek
public void seek(long localPos) throws java.io.IOException
Move the file pointer to the new location in the stream- Specified by:
seek
in classRAInputStream
- Parameters:
localPos
- - the new local postion in the stream. The localPos starts from 0.- Throws:
java.io.IOException
-
getOffset
public long getOffset() throws java.io.IOException
- Specified by:
getOffset
in classRAInputStream
- Throws:
java.io.IOException
-
length
public long length() throws java.io.IOException
- Specified by:
length
in classRAInputStream
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
Close the stream- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException
Description copied from class:RAInputStream
Returns the number of bytes that can be read (or skipped over) from this random access input stream without blocking by the next caller of a method for this input stream. The next caller might be the same thread or another thread.This abstract class is extended by
RAFolderInputStream
andRAFileInputStream
The
available
method returns-1
when no more data because the end of the stream has been reached.and returns
Integer.MAX_VALUE
when bytes of data is larger then Integer.MAX_VALUE.- Specified by:
available
in classRAInputStream
- Throws:
java.io.IOException
-
-