方法

GioFileEnumeratoriterate

自:2.44

声明 [源]

gboolean
g_file_enumerator_iterate (
  GFileEnumerator* direnum,
  GFileInfo** out_info,
  GFile** out_child,
  GCancellable* cancellable,
  GError** error
)

描述 [源]

这是从 C 程序中正确使用的一个版本 of g_file_enumerator_next_file()。使用 g_file_enumerator_next_file(),gboolean 返回值表示“迭代结束或错误”,这需要分配一个临时的 GError。

相比之下,使用这个函数,g_file_enumerator_iterate() 的返回值 FALSE 总是 表示“错误”。迭代结束通过 out_infoout_child 被设置为 NULL 来指示。

另一个关键的区别是,out_infoout_child 的引用由 direnum 所有(它们被缓存为隐藏属性)。你必须在自己的代码中不要取消引用它们。这使 C 代码在结合循环时的内存管理变得显著更容易。

最后,这个功能可选地还允许检索一个 GFile。

你必须指定至少一个 out_infoout_child

在 C 中正确使用 g_file_enumerator_iterate() 的代码模式是

direnum = g_file_enumerate_children (file, ...);
while (TRUE)
  {
    GFileInfo *info;
    if (!g_file_enumerator_iterate (direnum, &info, NULL, cancellable, error))
      goto out;
    if (!info)
      break;
    ... do stuff with "info"; do not unref it! ...
  }

out:
  g_object_unref (direnum); // Note: frees the last @info

自:2.44

参数

out_info

类型: GFileInfo

输出下一个 GFileInfo 的位置,或 NULL。

该参数将由函数设置。
该参数可以是 NULL。
返回的数据由实例所有。
out_child

类型: GFile

输出下一个 GFile 的位置,或 NULL。

该参数将由函数设置。
该参数可以是 NULL。
返回的数据由实例所有。
cancellable

类型: GCancellable

一个 GCancellable。

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

类型: GError **

可恢复错误的返回位置。

该参数可以是 NULL。
如果返回位置不为 NULL,那么你必须将其初始化为一个 NULL GError*。
如果没有错误,方法将把参数留下初始化为 NULL。
在发生错误的情况下,该参数将设置为一个新的 GError;调用者将接管数据,并负责释放它。

返回值

类型: gboolean

无描述