Class SeekableOutputStream
java.lang.Object
java.io.OutputStream
com.twelvemonkeys.io.SeekableOutputStream
- All Implemented Interfaces:
Seekable, Closeable, Flushable, AutoCloseable
- Direct Known Subclasses:
RandomAccessStream.OutputStreamView
Abstract base class for
OutputStreams implementing the
Seekable interface.- Version:
- $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/io/SeekableOutputStream.java#2 $
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) boolean(package private) long(package private) long -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected final voidfinal voidclose()Closes the stream.protected abstract voidfinal voidflush()Discards the initial position of the stream prior to the current stream position.final voidflushBefore(long pPosition) Discards the initial portion of the stream prior to the indicated postion.protected abstract voidflushBeforeImpl(long pPosition) final longReturns the earliest position in the stream to which seeking may be performed.final longReturns the current byte position of the stream.final voidmark()Marks a position in the stream to be returned to by a subsequent call to reset.final voidreset()Returns the file pointer to its previous position, at the time of the most recent unmatched call to mark.final voidseek(long pPosition) Seekable implementationprotected abstract voidseekImpl(long pPosition) final voidwrite(byte[] pBytes) Outputstream overridesMethods inherited from class OutputStream
nullOutputStream, write, writeMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Seekable
isCached, isCachedFile, isCachedMemory
-
Field Details
-
position
long position -
flushedPosition
long flushedPosition -
closed
boolean closed -
markedPositions
-
-
Constructor Details
-
SeekableOutputStream
public SeekableOutputStream()
-
-
Method Details
-
write
Outputstream overrides- Overrides:
writein classOutputStream- Throws:
IOException
-
seek
Seekable implementation- Specified by:
seekin interfaceSeekable- Parameters:
pPosition- a long containing the desired file pointer position.- Throws:
IOException- if any other I/O error occurs.
-
seekImpl
- Throws:
IOException
-
mark
public final void mark()Description copied from interface:SeekableMarks a position in the stream to be returned to by a subsequent call to reset. Unlike a standardInputStream, allSeekablestreams upport marking. Additionally, calls tomarkandresetmay be nested arbitrarily.Unlike the
markmethods declared by theReaderorInputStreaminterfaces, noreadLimitparameter is used. An arbitrary amount of data may be read following the call tomark. -
reset
Description copied from interface:SeekableReturns 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
IOExceptionwill be thrown if the previous marked position lies in the discarded portion of the stream.- Specified by:
resetin interfaceSeekable- Throws:
IOException- if an I/O error occurs.- See Also:
- throw an
-
flushBefore
Description copied from interface:SeekableDiscards 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
flushBeforemay 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:
flushBeforein interfaceSeekable- Parameters:
pPosition- a long containing the length of the file prefix that may be flushed.- Throws:
IOException- if an I/O error occurs.
-
flushBeforeImpl
- Throws:
IOException
-
flush
Description copied from interface:SeekableDiscards the initial position of the stream prior to the current stream position. Equivalent toflushBefore(getStreamPosition()).- Specified by:
flushin interfaceFlushable- Specified by:
flushin interfaceSeekable- Overrides:
flushin classOutputStream- Throws:
IOException- if an I/O error occurs.
-
getFlushedPosition
Description copied from interface:SeekableReturns 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:
getFlushedPositionin interfaceSeekable- Returns:
- the earliest legal position for seeking, as a
long. - Throws:
IOException- if an I/O error occurs.
-
getStreamPosition
Description copied from interface:SeekableReturns the current byte position of the stream. The next read will take place starting at this offset.- Specified by:
getStreamPositionin interfaceSeekable- Returns:
- a
longcontaining the position of the stream. - Throws:
IOException- if an I/O error occurs.
-
checkOpen
- Throws:
IOException
-
close
Description copied from interface:SeekableCloses the stream.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceSeekable- Overrides:
closein classOutputStream- Throws:
IOException- if the stream can't be closed.
-
closeImpl
- Throws:
IOException
-