GioBufferedInputStream

描述 [src]

class Gio.BufferedInputStream : Gio.FilterInputStream
  implements Gio.Seekable {
  /* No available fields */
}

缓冲输入流实现 GFilterInputStream,并提供了缓冲读取功能。

默认情况下,GBufferedInputStream的缓冲区大小设置为4千字节。

要创建一个缓冲输入流,请使用g_buffered_input_stream_new(),或使用g_buffered_input_stream_new_sized()在构造时指定缓冲区的大小。

要获取缓冲输入流中缓冲区的大小,请使用g_buffered_input_stream_get_buffer_size()。要更改缓冲输入流缓冲区的大小,请使用g_buffered_input_stream_set_buffer_size()。请注意,缓冲区的大小不能降低到缓冲区内数据的大小以下。

实现

构造函数

g_buffered_input_stream_new

从给定的base_stream创建一个新的GInputStream,缓冲区设置为默认大小(4千字节)。

g_buffered_input_stream_new_sized

从给定的base_stream创建一个新的GBufferedInputStream,缓冲区设置为size

实例方法

g_buffered_input_stream_fill

尝试从流中读取count字节到缓冲区。在此读取期间将阻塞。

g_buffered_input_stream_fill_async

异步地将数据读取到stream的缓冲区中,最多count大小。可以使用io_priority来优先读取。有关此函数的同步版本,请参阅g_buffered_input_stream_fill()

g_buffered_input_stream_fill_finish

完成异步读取。

g_buffered_input_stream_get_available

获取流中可用数据的大小。

g_buffered_input_stream_get_buffer_size

获取输入缓冲区的大小。

g_buffered_input_stream_peek

在缓冲区中预览,将大小为count的字节数据复制到buffer中,偏移offset字节。

g_buffered_input_stream_peek_buffer

返回包含当前可用字节的缓冲区。返回的缓冲区不得修改,并在从流中读取或填充缓冲区时失效。

g_buffered_input_stream_read_byte

尝试从流或缓冲区中读取一个字节。在此读取期间将阻塞。

g_buffered_input_stream_set_buffer_size

设置stream内部缓冲区的大小为size,或者为缓冲区内容的长度。缓冲区的大小永远不会小于其当前内容。

GFilterInputStream继承的方法(3)
g_filter_input_stream_get_base_stream

获取filter stream的基础流。

g_filter_input_stream_get_close_base_stream

返回在关闭stream时,是否关闭基础流。

g_filter_input_stream_set_close_base_stream

设置在关闭stream时,是否关闭基础流。

GInputStream继承的方法(19)
g_input_stream_clear_pending

清除stream上的挂起标志。

g_input_stream_close

关闭流,释放与其相关的资源。

g_input_stream_close_async

请求异步关闭流,释放与其相关的资源。操作完成后,将调用callback。然后您可以调用g_input_stream_close_finish()以获取操作的结果。

g_input_stream_close_finish

异步关闭流的完成,从g_input_stream_close_async()启动。

g_input_stream_has_pending

检查输入流是否有待处理的操作。

g_input_stream_is_closed

检查输入流是否已关闭。

g_input_stream_read

尝试从流中读取到以buffer开始的位置的count个字节。在此读取过程中可能会阻塞。

g_input_stream_read_all

尝试从流中读取到以buffer开始的位置的count个字节。在此读取过程中可能会阻塞。

g_input_stream_read_all_async

请求从流中异步读取count个字节到从buffer开始的位置。

since: 2.44

g_input_stream_read_all_finish

完成异步流读取操作,从g_input_stream_read_all_async()启动。

since: 2.44

g_input_stream_read_async

请求从流中以buffer开始的位置异步读取count个字节。操作完成后,将调用callback。然后您可以调用g_input_stream_read_finish()以获取操作的结果。

g_input_stream_read_bytes

与g_input_stream_read()类似,它尝试以阻止方式从流中读取count个字节。然而,它不会读取到用户提供的缓冲区中,而是将创建一个包含读取数据的新的GBytes对象。这可能更易于语言绑定使用。

since: 2.34

g_input_stream_read_bytes_async

请求从流中异步读取count个字节到一个新的GBytes中。操作完成后,将调用callback。然后您可以调用g_input_stream_read_bytes_finish()以获取操作的结果。

since: 2.34

g_input_stream_read_bytes_finish

完成异步流读取到GBytes的操作。

since: 2.34

g_input_stream_read_finish

完成异步流读取操作。

g_input_stream_set_pending

设置stream有挂起的操作。如果挂起标志已经设置或stream已关闭,则返回FALSE并设置error

g_input_stream_skip

尝试从流中跳过count个字节。在操作过程中可能会阻塞。

g_input_stream_skip_async

请求从流中异步跳过count个字节。操作完成后,将调用callback。然后您可以调用g_input_stream_skip_finish()以获取操作的结果。

g_input_stream_skip_finish

完成流跳过操作。

GObject继承的方法(43)

请参阅 GObject 获取方法列表的全集。

GSeekable继承的方法(5)
g_seekable_can_seek

测试流是否支持GSeekableIface

g_seekable_can_truncate

测试流的长度是否可以用g_seekable_truncate进行调整。

g_seekable_seek

通过给定 offsettype 在流中进行搜索。

g_seekable_tell

返回流中的当前位置。

g_seekable_truncate

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

属性

Gio.BufferedInputStream:buffer-size

后端缓冲区的大小,以字节为单位。

GFilterInputStream 继承的属性(2)
Gio.FilterInputStream:base-stream

执行 I/O 操作的基本流。

Gio.FilterInputStream:close-base-stream

当过滤器流关闭时,基本流是否应该被关闭。

信号

GObject 继承的信号(1)
GObject::notify

当对象的一个属性通过 g_object_set_property(),g_object_set() 等其值被设置时,发出 notify 信号。

类结构

struct GioBufferedInputStreamClass {
  GFilterInputStreamClass parent_class;
  gssize (* fill) (
    GBufferedInputStream* stream,
    gssize count,
    GCancellable* cancellable,
    GError** error
  );
  void (* fill_async) (
    GBufferedInputStream* stream,
    gssize count,
    int io_priority,
    GCancellable* cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data
  );
  gssize (* fill_finish) (
    GBufferedInputStream* stream,
    GAsyncResult* result,
    GError** error
  );
  void (* _g_reserved1) (
void
  );
  void (* _g_reserved2) (
void
  );
  void (* _g_reserved3) (
void
  );
  void (* _g_reserved4) (
void
  );
  void (* _g_reserved5) (
void
  );
  
}

无描述。

类成员
parent_class: GFilterInputStreamClass

无描述。

fill: gssize (* fill) ( GBufferedInputStream* stream, gssize count, GCancellable* cancellable, GError** error )

无描述。

fill_async: void (* fill_async) ( GBufferedInputStream* stream, gssize count, int io_priority, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data )

无描述。

fill_finish: gssize (* fill_finish) ( GBufferedInputStream* stream, GAsyncResult* result, GError** error )

无描述。

_g_reserved1: void (* _g_reserved1) ( void )

无描述。

_g_reserved2: void (* _g_reserved2) ( void )

无描述。

_g_reserved3: void (* _g_reserved3) ( void )

无描述。

_g_reserved4: void (* _g_reserved4) ( void )

无描述。

_g_reserved5: void (* _g_reserved5) ( void )

无描述。

虚方法

Gio.BufferedInputStreamClass.fill

尝试从流中读取count字节到缓冲区。在此读取期间将阻塞。

Gio.BufferedInputStreamClass.fill_async

异步地将数据读取到stream的缓冲区中,最多count大小。可以使用io_priority来优先读取。有关此函数的同步版本,请参阅g_buffered_input_stream_fill()