class QTemporaryFile#

QTemporaryFile 类是在临时文件上运行的 I/O 设备。 更多

Inheritance diagram of PySide6.QtCore.QTemporaryFile

摘要#

方法#

静态函数#

注意

本文档可能包含从C++自动翻译到Python的片段。我们始终欢迎对片段翻译的贡献。如果您看到翻译中存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建一个工单来告诉我们。

详细描述#

警告

本节包含从C++自动翻译到Python的片段,可能包含错误。

QTemporaryFile用于安全地创建唯一的临时文件。文件本身是通过调用open()来创建的。临时文件的名字确保是唯一的(即,您可以保证不会覆盖现有的文件),并且在QTemporaryFile对象销毁后将随后被删除。这是一项重要的技术,可以避免临时文件中存储数据的程序数据损坏。文件名是自动生成的,或者基于传递给QTemporaryFile构造函数的模板来创建的。

示例

# Within a function/method...
file = QTemporaryFile()
if file.open():
    # file.fileName() returns the unique file name

# The QTemporaryFile destructor removes the temporary file
# as it goes out of scope.

在调用close()之后重新打开QTemporaryFile是安全的。只要QTemporaryFile对象本身没有被销毁,唯一的临时文件将存在,并由QTemporaryFile内部保持打开状态。

可以通过调用fileName()找到临时文件的名字。请注意,这仅在文件首次打开后定义;在此时之前,函数返回一个空字符串。

临时文件的名字将包含一些静态的部分和一些计算为唯一的部分。默认文件名将从applicationName()获取(否则为qt_temp),并将其放置在由tempPath()返回的临时路径中。如果您指定了自己的文件名,则默认情况下不会将相对文件路径放置在临时目录中,而是相对于当前工作目录。如果将调用rename()函数,指定正确的目录是很重要的,因为QTemporaryFile只能将其创建在同一卷/文件系统内的文件重命名。

指定的文件名可以包含以下模板 XXXXXX(六个大写字母“X”字符),它将被自动生成的文件名部分替换。请注意,模板区分大小写。如果模板在文件名中不存在,QTemporaryFile 将将生成的部分追加到给定的文件名中。

注意

在Linux上,QTemporaryFile 将尝试创建无名的临时文件。如果成功,open() 将返回true,但exists() 将为false。如果您调用fileName()或任何调用它的函数,QTemporaryFile 将给文件一个名称,因此大多数应用程序将不会看到任何区别。

有关信息

tempPath() QFile

__init__()#

使用由applicationName() 返回的应用程序名称(否则为 qt_temp)后跟“.XXXXXX”作为文件模板,构造一个 QTemporaryFile。该文件存储在系统的临时目录 tempPath() 中。

__init__(parent)
参数:

parentQObject

使用由applicationName() 返回的应用程序名称(否则为 qt_temp)后跟“.XXXXXX”作为文件模板,并带有给定 parentQTemporaryFile 构造一个。该文件存储在系统的临时目录 tempPath() 中。

有关信息

setFileTemplate()

__init__(templateName)
参数:

templateName – 字符串

使用模板文件名 templateName 创建一个 QTemporaryFile 对象。当打开临时文件时,将使用该文件名来创建一个唯一的文件名。

如果 templateName 不包含 XXXXXX,它将自动附加并用作文件名的动态部分。

如果 templateName 是相对路径,该路径相对于当前工作目录。如果您想使用系统临时目录来构造 templateName,可以使用 tempPath()。如果将调用 rename() 函数,则非常重要地指定正确的目录,因为 QTemporaryFile 只能在与它自己创建的相同卷/文件系统中重命名文件。

有关信息

open() fileTemplate()

__init__(templateName, parent)
参数:
  • templateName – 字符串

  • parentQObject

使用模板文件名 templateName 和指定的 parent 创建一个 QTemporaryFile 对象。打开临时文件时,将使用该文件名来创建一个唯一的文件名。

如果 templateName 不包含 XXXXXX,它将自动附加并用作文件名的动态部分。

如果 templateName 是相对路径,该路径相对于当前工作目录。如果您想使用系统临时目录来构造 templateName,可以使用 tempPath()。如果将调用 rename() 函数,则非常重要地指定正确的目录,因为 QTemporaryFile 只能在与它自己创建的相同卷/文件系统中重命名文件。

有关信息

open() fileTemplate()

autoRemove()#
返回类型::

bool

如果 QTemporaryFile 在自动删除模式下,则返回 true。自动删除模式会在销毁时自动将从磁盘删除文件名。这使得在堆栈上创建您的 QTemporaryFile 对象变得非常容易,填充数据,从中读取,最终在函数返回时自动清理。

默认开启自动删除。

有关信息

setAutoRemove() remove()

static createNativeFile(file)#
参数:

文件QFile

返回类型::

QTemporaryFile

警告

本节包含从C++自动翻译到Python的片段,可能包含错误。

如果文件不是一个本地的文件,那么在tempPath()中创建一个QTemporaryFile,将文件的内容复制进去,并返回临时文件的一个指针。如果文件已经是本地文件,则不执行任何操作并返回0

例如

f = QFile(":/resources/file.txt")
QTemporaryFile.createNativeFile(f) # Returns a pointer to a temporary file
f = QFile("/users/qt/file.txt")
QTemporaryFile.createNativeFile(f) # Returns 0

有关信息

isNativePath()

静态createNativeFile(fileName)
参数:

fileName – 字符串

返回类型::

QTemporaryFile

这是一个重载函数。

在工作于给定的fileName上,而不是现有的QFile对象。

fileTemplate()#
返回类型::

字符串

返回设定的文件模板。默认文件模板将是 qcoreappname.XXXXXX 并放置在 tempPath() 中。

有关信息

setFileTemplate()

open()#
返回类型::

bool

QTemporaryFile总是以QIODevice::ReadWrite模式打开,这允许轻松访问文件中的数据。此函数在成功时返回true,并将fileName()设置为使用的唯一文件名。

有关信息

fileName()

setAutoRemove(b)#
参数:

– 布尔值

如果btrue,则将QTemporaryFile设置为自动删除模式。

默认开启自动删除。

如果您将此属性设置为false,请确保应用程序提供一种方法在不再需要文件时将其删除,包括将责任转交给另一个程序。始终使用fileName()函数来获取名称,切勿尝试猜测QTemporaryFile生成的名称。

在某些系统中,如果在关闭文件之前没有调用fileName(),则无论此属性的状态如何,临时文件可能会被删除。不应依赖于这种行为,因此应用程序代码应该调用fileName()或启用自动删除功能。

有关信息

autoRemove() remove()

setFileTemplate(name)#
参数:

name – str

将文件名的静态部分设置为name。如果文件模板包含 XXXXXX,则将自动替换为文件名的唯一部分,否则将根据指定的静态部分自动确定文件名。

如果name包含相对文件路径,则路径相对于当前工作目录。如果您想使用系统的临时目录,可以使用tempPath()来构造name。如果将调用rename()函数,则非常重要指定正确的目录,因为QTemporaryFile只能重命名与临时文件本身创建在相同卷/文件系统中的文件。

有关信息

fileTemplate()