Class SeekableOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- com.twelvemonkeys.io.SeekableOutputStream
-
- All Implemented Interfaces:
Seekable
,java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
- Direct Known Subclasses:
RandomAccessStream.OutputStreamView
public abstract class SeekableOutputStream extends java.io.OutputStream implements Seekable
Abstract base class forOutputStream
s implementing theSeekable
interface.- Version:
- $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/io/SeekableOutputStream.java#2 $
- See Also:
SeekableInputStream
-
-
Field Summary
Fields Modifier and Type Field Description (package private) boolean
closed
(package private) long
flushedPosition
protected java.util.Stack<java.lang.Long>
markedPositions
(package private) long
position
-
Constructor Summary
Constructors Constructor Description SeekableOutputStream()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
checkOpen()
void
close()
Closes the stream.protected abstract void
closeImpl()
void
flush()
Discards the initial position of the stream prior to the current stream position.void
flushBefore(long pPosition)
Discards the initial portion of the stream prior to the indicated postion.protected abstract void
flushBeforeImpl(long pPosition)
long
getFlushedPosition()
Returns the earliest position in the stream to which seeking may be performed.long
getStreamPosition()
Returns the current byte position of the stream.void
mark()
Marks a position in the stream to be returned to by a subsequent call to reset.void
reset()
Returns the file pointer to its previous position, at the time of the most recent unmatched call to mark.void
seek(long pPosition)
Sets the current stream position to the desired location.protected abstract void
seekImpl(long pPosition)
void
write(byte[] pBytes)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.twelvemonkeys.io.Seekable
isCached, isCachedFile, isCachedMemory
-
-
-
-
Method Detail
-
write
public final void write(byte[] pBytes) throws java.io.IOException
- Overrides:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
seek
public final void seek(long pPosition) throws java.io.IOException
Description copied from interface:Seekable
Sets the current stream position to the desired location. The next read will occur at this location.An
IndexOutOfBoundsException
will be thrown if pPosition is smaller than the flushed position (as returned bySeekable.getFlushedPosition()
).It is legal to seek past the end of the file; an
EOFException
will be thrown only if a read is performed.
-
seekImpl
protected abstract void seekImpl(long pPosition) throws java.io.IOException
- Throws:
java.io.IOException
-
mark
public final void mark()
Description copied from interface:Seekable
Marks a position in the stream to be returned to by a subsequent call to reset. Unlike a standardInputStream
, allSeekable
streams upport marking. Additionally, calls tomark
andreset
may be nested arbitrarily.Unlike the
mark
methods declared by theReader
orInputStream
interfaces, noreadLimit
parameter is used. An arbitrary amount of data may be read following the call tomark
.
-
reset
public final void reset() throws java.io.IOException
Description copied from interface:Seekable
Returns the file pointer to its previous position, at the time of the most recent unmatched call to mark.Calls to reset without a corresponding call to mark will either:
- throw an
IOException
- or, reset to the beginning of the stream.
An
IOException
will be thrown if the previous marked position lies in the discarded portion of the stream. - throw an
-
flushBefore
public final void flushBefore(long pPosition) throws java.io.IOException
Description copied from interface:Seekable
Discards the initial portion of the stream prior to the indicated postion. Attempting to seek to an offset within the flushed portion of the stream will result in anIndexOutOfBoundsException
.Calling
flushBefore
may allow classes implementing this interface to free up resources such as memory or disk space that are being used to store data from the stream.- Specified by:
flushBefore
in interfaceSeekable
- Parameters:
pPosition
- a long containing the length of the file prefix that may be flushed.- Throws:
java.io.IOException
- if an I/O error occurs.
-
flushBeforeImpl
protected abstract void flushBeforeImpl(long pPosition) throws java.io.IOException
- Throws:
java.io.IOException
-
flush
public final void flush() throws java.io.IOException
Description copied from interface:Seekable
Discards the initial position of the stream prior to the current stream position. Equivalent toflushBefore(getStreamPosition())
.
-
getFlushedPosition
public final long getFlushedPosition() throws java.io.IOException
Description copied from interface:Seekable
Returns the earliest position in the stream to which seeking may be performed. The returned value will be the maximum of all values passed into previous calls toflushBefore
.- Specified by:
getFlushedPosition
in interfaceSeekable
- Returns:
- the earliest legal position for seeking, as a
long
. - Throws:
java.io.IOException
- if an I/O error occurs.
-
getStreamPosition
public final long getStreamPosition() throws java.io.IOException
Description copied from interface:Seekable
Returns the current byte position of the stream. The next read will take place starting at this offset.- Specified by:
getStreamPosition
in interfaceSeekable
- Returns:
- a
long
containing the position of the stream. - Throws:
java.io.IOException
- if an I/O error occurs.
-
checkOpen
protected final void checkOpen() throws java.io.IOException
- Throws:
java.io.IOException
-
close
public final void close() throws java.io.IOException
Description copied from interface:Seekable
Closes the stream.
-
closeImpl
protected abstract void closeImpl() throws java.io.IOException
- Throws:
java.io.IOException
-
-