方法
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_info
或 out_child
被设置为 NULL
来指示。
另一个关键的区别是,out_info
和 out_child
的引用由 direnum
所有(它们被缓存为隐藏属性)。你必须在自己的代码中不要取消引用它们。这使 C 代码在结合循环时的内存管理变得显著更容易。
最后,这个功能可选地还允许检索一个 GFile。
你必须指定至少一个 out_info
或 out_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;调用者将接管数据,并负责释放它。