方法
GioFilequery_exists
声明 [src]
gboolean
g_file_query_exists (
GFile* file,
GCancellable* cancellable
)
描述 [src]
一个用于检查特定文件是否存在的实用函数。
此 API 的后备实现使用 g_file_query_info()
,因此可能会进行阻塞 I/O。要异步查询文件是否存在,请使用 g_file_query_info_async()
。
请注意,在许多情况下,首次检查文件是否存在,然后根据该结果执行某个操作是存在风险的,因为文件可能在操作之间被创建或删除。处理这种情况的一般方法是不进行检查,而是直接执行操作并处理发生的错误。
作为无风险检查的示例,考虑读取文件的情况,如果文件不存在,则创建它。有两种风险版本:读取它,错误发生时创建它;以及:检查是否存在,如果不存在创建。这可能会导致两个进程创建文件(结果可能是部分写入的文件)。正确的方法是始终尝试使用 g_file_create()
创建文件,这将原子性地创建文件或以 G_IO_ERROR_EXISTS
错误失败。
然而,在许多情况下,在用户界面中进行存在检查很有用,例如使菜单项敏感或不敏感,这样您就不必欺骗用户认为某件事是可能的,然后只显示一个错误对话框。如果这样做,您应该确保也处理由于竞争条件执行操作时可能发生的错误。
参数
cancellable
-
类型:
GCancellable
可选
GCancellable
对象,NULL
表示忽略。此参数可以为 NULL
。数据由方法调用者拥有。