01: package uk.org.ponder.streamutil;
02:
03: import java.io.IOException;
04:
05: /** This interface abstracts the properties of a read-only random access file.
06: */
07:
08: public interface RandomAccessRead {
09: /** Returns the length of the file.
10: * @return The length of the file as a <code>long</code>.
11: * @exception IOException if an I/O error occurs.
12: */
13: public long length() throws IOException;
14:
15: /** Closes this RandomAccessFile.
16: */
17: public void close() throws IOException;
18:
19: /** Reads a byte of data from this file. This method blocks if no input is yet available.
20: * @return the next byte of data, or -1 if the end of the file is reached.
21: * @exception IOException if an I/O error occurs.
22: */
23: public int read() throws IOException;
24:
25: /** Reads up to len bytes of data from this file into an array of bytes.
26: * This method blocks until at least one byte of input is available.
27: * @param b the buffer into which the data is read.
28: * @param off the start offset of the data.
29: * @param len the maximum number of bytes read.
30: * @return the total number of bytes read into the buffer,
31: * or -1 if there is no more data because the end of the file has been reached.
32: * @exception IOException if an I/O error occurs.
33: */
34: public int read(byte b[], int off, int len) throws IOException;
35:
36: /** Sets the file-pointer offset, measured from the beginning of this file,
37: * at which the next read or write occurs. The offset may be set beyond the end of the file.
38: * Setting the offset beyond the end of the file does not change the file length.
39: * The file length will change only by writing after the offset has been set beyond the end
40: * of the file.
41: *
42: * @param pos the offset position, measured in bytes from the beginning of the file,
43: * at which to set the file pointer.
44: * @exception IOException if an I/O error occurs.
45: */
46: public void seek(long pos) throws IOException;
47:
48: /** Returns the current offset in this file.
49: * @return the offset from the beginning of the file, in bytes,
50: * at which the next read or write occurs.
51: * @exception IOException if an I/O error occurs.
52: */
53: public long getFilePointer() throws IOException;
54:
55: /** Sets the callback used to report when this file is closed.
56: * @param callback A callback used to report when this file is closed.
57: */
58: public void setStreamClosedCallback(StreamClosedCallback callback);
59: }
|