Interface Seekable
- All Superinterfaces:
Proxy
- All Known Implementing Classes:
BufferedInputStream
,BufferedOutputStream
,DataInputStream
,DataOutputStream
,FileInputStream
,FileIOStream
,FileOutputStream
,MemoryInputStream
,MemoryOutputStream
,Seekable.SeekableImpl
GSeekable
is implemented by streams (implementations of
InputStream
or OutputStream
) that support seeking.
Seekable streams largely fall into two categories: resizable and fixed-size.
GSeekable
on fixed-sized streams is approximately the same as POSIX
lseek()
) on a block device (for example: attempting to seek
past the end of the device is an error). Fixed streams typically cannot be
truncated.
GSeekable
on resizable streams is approximately the same as POSIX
lseek()
) on a normal file. Seeking past the end and writing
data will usually cause the stream to resize by introducing zero bytes.
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
Provides an interface for implementing seekable functionality on I/O Streams.static class
The SeekableImpl type represents a native instance of the Seekable interface. -
Method Summary
Modifier and TypeMethodDescriptiondefault boolean
canSeek()
Tests if the stream supports theGSeekableIface
.default boolean
Tests if the length of the stream can be adjusted with g_seekable_truncate().static Type
getType()
Get the GType of the Seekable classdefault boolean
seek
(long offset, SeekType type, @Nullable Cancellable cancellable) Seeks in the stream by the givenoffset
, modified bytype
.default long
tell()
Tells the current position within the stream.default boolean
truncate
(long offset, @Nullable Cancellable cancellable) Sets the length of the stream tooffset
.
-
Method Details
-
getType
-
canSeek
default boolean canSeek()Tests if the stream supports theGSeekableIface
.- Returns:
true
if this Seekable can be seeked.false
otherwise.
-
canTruncate
default boolean canTruncate()Tests if the length of the stream can be adjusted with g_seekable_truncate().- Returns:
true
if the stream can be truncated,false
otherwise.
-
seek
default boolean seek(long offset, SeekType type, @Nullable @Nullable Cancellable cancellable) throws GErrorException Seeks in the stream by the givenoffset
, modified bytype
.Attempting to seek past the end of the stream will have different results depending on if the stream is fixed-sized or resizable. If the stream is resizable then seeking past the end and then writing will result in zeros filling the empty space. Seeking past the end of a resizable stream and reading will result in EOF. Seeking past the end of a fixed-sized stream will fail.
Any operation that would result in a negative offset will fail.
If
cancellable
is notnull
, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the errorIOErrorEnum.CANCELLED
will be returned.- Parameters:
offset
- agoffset
.type
- aGSeekType
.cancellable
- optionalGCancellable
object,null
to ignore.- Returns:
true
if successful. If an error has occurred, this function will returnfalse
and seterror
appropriately if present.- Throws:
GErrorException
- seeGError
-
tell
default long tell()Tells the current position within the stream.- Returns:
- the (positive or zero) offset from the beginning of the buffer, zero if the target is not seekable.
-
truncate
default boolean truncate(long offset, @Nullable @Nullable Cancellable cancellable) throws GErrorException Sets the length of the stream tooffset
. If the stream was previously larger thanoffset
, the extra data is discarded. If the stream was previously shorter thanoffset
, it is extended with NUL ('\\0') bytes.If
cancellable
is notnull
, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the errorIOErrorEnum.CANCELLED
will be returned. If an operation was partially finished when the operation was cancelled the partial result will be returned, without an error.- Parameters:
offset
- new length for this Seekable, in bytes.cancellable
- optionalGCancellable
object,null
to ignore.- Returns:
true
if successful. If an error has occurred, this function will returnfalse
and seterror
appropriately if present.- Throws:
GErrorException
- seeGError
-