虚函数
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
-
类型:
gboolean
TRUE
表示应创建备份。 flags
-
类型:
GFileCreateFlags
一组
GFileCreateFlags
。 cancellable
-
类型:
GCancellable
可选的
GCancellable
对象,NULL
忽略。参数可以是 NULL
。数据由方法调用者拥有。 error
-
类型:
GError **
可恢复错误的返回位置。
参数可以是 NULL
。如果返回位置不是 NULL
,那么您必须将其初始化为零GError*
。如果没有错误,虚拟函数将使参数保持初始化为 NULL
。在出錯情況下,參數將被設置為一個新分配的 GError
;調用者將擁有資料的所有權,並負責釋放它。