方法

GioInputStreamread

声明 [src]

gssize
g_input_stream_read (
  GInputStream* stream,
  void* buffer,
  gsize count,
  GCancellable* cancellable,
  GError** error
)

描述 [src]

尝试从流中读取 count 字节到起始于 buffer 的缓冲区。在此读取过程中会阻塞。

如果 count 为零则返回零并什么都不做。大于 G_MAXSSIZEcount 会引发一个 G_IO_ERROR_INVALID_ARGUMENT 错误。

成功时,会返回读入缓冲区的字节数。如果这不是请求的大小,这不是错误,因为在文件末尾附近可能会发生这种情况。在文件末尾(或如果 count 为零)时返回零,但不会在其他情况下返回零。

返回的 buffer 不是一个以空字符终止的字符串,它可以在任何位置包含空字符,并且此函数不会以空字符终止 buffer

如果 cancellable 不是 NULL,则可以从另一个线程触发可取消对象来取消操作。如果操作被取消,则返回错误 G_IO_ERROR_CANCELLED。如果操作在取消时部分完成,则返回部分结果,不引发错误。

如果发生错误,则返回 -1 并根据需要设置 error

参数

buffer

类型: 一个 guint8 数组

要读取数据的缓冲区(长度至少为 count 字节)。

该参数将由函数设置。
数组的长度由 count 参数指定。
返回的数据由该实例所有。
count

类型: gsize

从流中读取的字节数。

cancellable

类型: GCancellable

可选的 GCancellable 对象,NULL 表示忽略。

该参数可以为 NULL
数据由方法调用者所有。
error

类型: GError **

用于可恢复错误的返回位置。

该参数可以为 NULL
如果返回位置不是 NULL,则必须将初始化为 NULLGError*
如果没有错误,方法会将该参数留在初始化为 NULL
在出现错误的情况下,将设置新的分配的 GError;调用者将接管数据,并负责释放它。

返回值

类型: gssize

读取的字节数,错误时为-1,文件结尾时为0。