虚函数

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

如果您传入非 NULLetag 值且 file 已存在,则此值将与文件的当前实体标签进行比较,如果它们不同,则返回错误 G_IO_ERROR_WRONG_ETAG。这通常意味着文件自上次读取以来已更改。您可以在完成写入并关闭 GFileOutputStream 后从 g_file_output_stream_get_etag() 获取新 etag。当您加载新文件时,可以使用 g_file_input_stream_query_info() 获取文件的 etag。

如果 make_backupTRUE,则此函数将在覆盖之前尝试备份当前文件。如果失败,将返回错误 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;調用者將擁有資料的所有權,並負責釋放它。

返回值

類型: GFileOutputStream

一個 GFileOutputStreamNULL 在出錯時。使用 g_object_unref() 釋放返回的物件。

該方法的調用者擁有返回的數據的所有權,並負責釋放它。