Interface Seekable

All Superinterfaces:
Proxy
All Known Implementing Classes:
BufferedInputStream, BufferedOutputStream, DataInputStream, DataOutputStream, FileInputStream, FileIOStream, FileOutputStream, MemoryInputStream, MemoryOutputStream, Seekable.Seekable$Impl

@Generated("org.javagi.JavaGI") public interface Seekable extends Proxy

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

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    The Seekable$Impl type represents a native instance of the Seekable interface.
    static class 
    Provides an interface for implementing seekable functionality on I/O Streams.
  • Method Summary

    Modifier and Type
    Method
    Description
    default boolean
    Tests if the stream supports the GSeekableIface.
    default boolean
    Tests if the length of the stream can be adjusted with g_seekable_truncate().
    static @Nullable Type
    Get the GType of the Seekable class.
    default boolean
    seek(long offset, SeekType type, @Nullable Cancellable cancellable)
    Seeks in the stream by the given offset, modified by type.
    default long
    Tells the current position within the stream.
    default boolean
    truncate(long offset, @Nullable Cancellable cancellable)
    Sets the length of the stream to offset. If the stream was previously larger than offset, the extra data is discarded.

    Methods inherited from interface Proxy

    handle
  • Method Details

    • getType

      static @Nullable Type getType()
      Get the GType of the Seekable class.
      Returns:
      the GType
    • canSeek

      default boolean canSeek()
      Tests if the stream supports the GSeekableIface.
      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 Cancellable cancellable) throws GErrorException

      Seeks in the stream by the given offset, modified by type.

      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 not null, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error IOErrorEnum.CANCELLED will be returned.

      Parameters:
      offset - a goffset.
      type - a GSeekType.
      cancellable - optional GCancellable object, null to ignore.
      Returns:
      true if successful. If an error has occurred, this function will return false and set error appropriately if present.
      Throws:
      GErrorException - see GError
    • 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 Cancellable cancellable) throws GErrorException

      Sets the length of the stream to offset. If the stream was previously larger than offset, the extra data is discarded. If the stream was previously shorter than offset, it is extended with NUL ('\0') bytes.

      If cancellable is not null, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error IOErrorEnum.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 seekable, in bytes.
      cancellable - optional GCancellable object, null to ignore.
      Returns:
      true if successful. If an error has occurred, this function will return false and set error appropriately if present.
      Throws:
      GErrorException - see GError