虚函数
GioFilereplace
声明 [源]
GFileOutputStream*
replace (
GFile* file,
const char* etag,
gboolean make_backup,
GFileCreateFlags flags,
GCancellable* cancellable,
GError** error
)
描述 [源]
返回用于覆盖文件的输出流,可能首先创建文件备份。如果文件不存在,将创建它。
会尽力以最安全的方式替换文件,以确保写入过程中的任何错误不会影响已经存在的文件副本。例如,对于本地文件,它可能会写入临时文件,然后在流关闭时以原子方式重命名目标。
默认情况下,创建的文件通常可由所有人读取,但如果你在 flags 中传入 G_FILE_CREATE_PRIVATE,文件将只对当前用户可读,这是在目标文件系统上支持的级别。
如果 cancellable 不是 NULL,则可以在另一个线程中触发可取消对象来取消操作。如果操作被取消,将返回错误 G_IO_ERROR_CANCELLED。
如果您传入非 NULL 的 etag 值且 file 已存在,则此值将与文件的当前实体标签进行比较,如果它们不同,则返回错误 G_IO_ERROR_WRONG_ETAG。这通常意味着文件自上次读取以来已更改。您可以在完成写入并关闭 GFileOutputStream 后从 g_file_output_stream_get_etag() 获取新 etag。当您加载新文件时,可以使用 g_file_input_stream_query_info() 获取文件的 etag。
如果 make_backup 为 TRUE,则此函数将在覆盖之前尝试备份当前文件。如果失败,将返回错误 G_IO_ERROR_CANT_CREATE_BACKUP。如果您仍然要替换,请将 make_backup 设置为 FALSE 再次尝试。
如果文件是目录,将返回错误 G_IO_ERROR_IS_DIRECTORY,如果是其他非常规文件形式,则返回错误 G_IO_ERROR_NOT_REGULAR_FILE。某些文件系统不允许所有文件名,可能返回错误 G_IO_ERROR_INVALID_FILENAME,如果名称过长,则返回 G_IO_ERROR_FILENAME_TOO_LONG。其他错误也可能发生,这取决于文件所在的文件系统。
参数
etag-
类型:
const char*当前
GFile的可选 实体标签,或NULL忽略。参数可以是 NULL。数据由方法调用者拥有。 值是一个以 null 结尾的 UTF-8 字符串。 make_backup-
类型:
gbooleanTRUE表示应创建备份。 flags-
类型:
GFileCreateFlags一组
GFileCreateFlags。 cancellable-
类型:
GCancellable可选的
GCancellable对象,NULL忽略。参数可以是 NULL。数据由方法调用者拥有。 error-
类型:
GError **可恢复错误的返回位置。
参数可以是 NULL。如果返回位置不是 NULL,那么您必须将其初始化为零GError*。如果没有错误,虚拟函数将使参数保持初始化为 NULL。在出錯情況下,參數將被設置為一個新分配的 GError;調用者將擁有資料的所有權,並負責釋放它。