方法

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
数据由方法调用者拥有。

返回值

类型: gboolean

如果文件存在(且可以无错误地检测到),则返回 TRUE,否则(或如果已取消)返回 FALSE