方法
GioInputStreamread_bytes
自2.34版本起
声明 [源]
GBytes*
g_input_stream_read_bytes (
GInputStream* stream,
gsize count,
GCancellable* cancellable,
GError** error
)
描述 [源]
与 g_input_stream_read() 类似,尝试以阻塞方式从流中读取 count
个字节。然而,它不会读取到用户提供的缓冲区中,而是会创建一个新的 GBytes
,包含读取的数据。这可能更适合从语言绑定中使用。
如果 count 为零,则返回一个零长度的 GBytes
并不执行任何操作。大于 G_MAXSSIZE
的 count
值将导致返回 G_IO_ERROR_INVALID_ARGUMENT
错误。
在成功的情况下,将返回一个新的 GBytes
。如果该对象的大小与请求的大小不同,则不是错误,因为在文件末尾附近等情况都可能发生。如果到达文件末尾(或 count
为零),则返回零长度 GBytes
,但在其他情况下永不返回零长度 GBytes
。
如果 cancellable
不是 NULL
,则可以从另一个线程触发可取消对象来取消操作。如果操作被取消,将返回错误 G_IO_ERROR_CANCELLED
。如果在操作被取消时操作已部分完成,则将返回部分结果,而不会引发错误。
如果出现错误,则返回 NULL
,并将相应地设置 error
。
自 2.34 起可用
参数
count
-
类型:
gsize
将从流中读取的最大字节数。常见的值包括 4096 和 8192。
cancellable
-
类型:
GCancellable
可选的
GCancellable
对象,NULL
表示忽略。该参数可以是 NULL
。数据由方法调用者所有。 error
-
类型:
GError **
用于恢复错误的位置。
该参数可以是 NULL
。如果返回位置不是 NULL
,则必须将其初始化为零的GError*
。如果没有错误,则方法将保留初始化为 NULL
的参数。出错时,将设置参数为一个新的 GError
;调用者将拥有数据,并负责释放它。
返回值
类型: GBytes
创建一个新的 GBytes
,或者在出现错误时返回 NULL
。
方法调用者负责获取返回的数据的所有权,并负责释放它。 |