接口

GioSeekable

描述 [src]

interface Gio.Seekable : GObject.Object

GSeekable是由支持定位的流(GInputStreamGOutputStream)实现的。

Seekable流主要分为两大类:可调整大小和固定大小。

在固定大小的流上实施的GSeekable大致与在块设备上实施的POSIX lseek()相同(例如:尝试超出设备末尾是错误)。固定流通常不能截断。

可调整大小的流上的GSeekable大致与在普通文件上实施的POSIX lseek()相同。超出末尾并写入数据通常会导致通过引入零字节来调整流的大小。

先决条件

为了实现Seekable,您的类型必须从GObject继承。

实例方法

g_seekable_can_seek

测试流是否支持GSeekableIface

g_seekable_can_truncate

测试是否可以使用g_seekable_truncate()调整流的长度。

g_seekable_seek

通过给定的offset在流中定位,并通过type进行修改。

g_seekable_tell

告知流中的当前位置。

g_seekable_truncate

将流的长度设置为offset。如果流之前大于offset,将丢弃额外数据。如果流之前小于offset,它将通过NUL(‘\0’)字节进行扩展。

接口结构

struct GioSeekableIface {
  GTypeInterface g_iface;
  goffset (* tell) (
    GSeekable* seekable
  );
  gboolean (* can_seek) (
    GSeekable* seekable
  );
  gboolean (* seek) (
    GSeekable* seekable,
    goffset offset,
    GSeekType type,
    GCancellable* cancellable,
    GError** error
  );
  gboolean (* can_truncate) (
    GSeekable* seekable
  );
  gboolean (* truncate_fn) (
    GSeekable* seekable,
    goffset offset,
    GCancellable* cancellable,
    GError** error
  );
  
}

提供一个接口,用于在I/O流上实现可寻址的功能。

接口成员
g_iface
GTypeInterface
 

父接口。

tell
goffset (* tell) (
    GSeekable* seekable
  )
 

告知流中的当前位置。

can_seek
gboolean (* can_seek) (
    GSeekable* seekable
  )
 

检查流是否支持定位。

seek
gboolean (* seek) (
    GSeekable* seekable,
    goffset offset,
    GSeekType type,
    GCancellable* cancellable,
    GError** error
  )
 

在流中的某个位置定位。

can_truncate
gboolean (* can_truncate) (
    GSeekable* seekable
  )
 

检查流是否支持截断。

truncate_fn
gboolean (* truncate_fn) (
    GSeekable* seekable,
    goffset offset,
    GCancellable* cancellable,
    GError** error
  )
 

截断流。

虚拟方法

Gio.Seekable.can_seek

测试流是否支持GSeekableIface

Gio.Seekable.can_truncate

测试是否可以使用g_seekable_truncate()调整流的长度。

Gio.Seekable.seek

通过给定的offset在流中定位,并通过type进行修改。

Gio.Seekable.tell

告知流中的当前位置。

Gio.Seekable.truncate_fn

将流的长度设置为offset。如果流之前大于offset,将丢弃额外数据。如果流之前小于offset,它将通过NUL(‘\0’)字节进行扩展。