PySide6.QtCore.QFileDevice

class QFileDevice

QFileDevice 类提供了一个用于读取和写入打开文件的接口。更多

PySide6.QtCore.QFileDevice 的继承图

继承自: QSaveFile, QFile, QTemporaryFile

概要

方法

虚拟方法

注意

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

详细描述

QFileDevice 是用于读写文本和二进制文件以及资源的I/O设备的基类。QFile 提供了主要功能,QFileDevice 作为基类,用于与其他文件设备(如QSaveFile)共享功能,通过提供所有可以在由QFileQSaveFile 打开的文件上执行的操作。

另请参阅

QFile QSaveFile

class FileError

此枚举描述了可能由error()函数返回的错误。

常量

描述

QFileDevice.NoError

没有发生错误。

QFileDevice.ReadError

从文件读取时发生错误。

QFileDevice.WriteError

写入文件时发生错误。

QFileDevice.FatalError

发生了一个致命错误。

QFileDevice.ResourceError

资源不足(例如,打开的文件太多,内存不足等)

QFileDevice.OpenError

文件无法打开。

QFileDevice.AbortError

操作被中止。

QFileDevice.TimeOutError

发生了超时。

QFileDevice.UnspecifiedError

发生了一个未指定的错误。

QFileDevice.RemoveError

文件无法被删除。

QFileDevice.RenameError

文件无法重命名。

QFileDevice.PositionError

文件中的位置无法更改。

QFileDevice.ResizeError

文件无法调整大小。

QFileDevice.PermissionsError

文件无法访问。

QFileDevice.CopyError

文件无法复制。

class FileTime

此枚举由fileTime()setFileTime()函数使用。

常量

描述

QFileDevice.FileAccessTime

文件最近被访问的时间(例如读取或写入)。

QFileDevice.FileBirthTime

文件创建时间(在UNIX上可能不支持)。

QFileDevice.FileMetadataChangeTime

文件元数据上次更改的时间。

QFileDevice.FileModificationTime

文件最近修改的时间。

class Permission

警告

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

(继承自 enum.Flag) 此枚举用于 permission() 函数来报告文件的权限和所有权。这些值可以通过 OR 运算组合在一起,以测试多个权限和所有权值。

常量

描述

QFileDevice.ReadOwner

文件的所有者可以读取该文件。

QFileDevice.WriteOwner

文件可由文件所有者写入。

QFileDevice.ExeOwner

文件可由文件所有者执行。

QFileDevice.ReadUser

文件可被用户读取。

QFileDevice.WriteUser

文件可由用户写入。

QFileDevice.ExeUser

文件可由用户执行。

QFileDevice.ReadGroup

文件可被组读取。

QFileDevice.WriteGroup

文件可由组写入。

QFileDevice.ExeGroup

文件可由组执行。

QFileDevice.ReadOther

文件可被其他人读取。

QFileDevice.WriteOther

文件可被其他人写入。

QFileDevice.ExeOther

文件可由其他用户执行。

警告

由于Qt支持的平台存在差异,ReadUser、WriteUser和ExeUser的语义依赖于平台:在Unix上,返回文件所有者的权限,而在Windows上,返回当前用户的权限。这种行为可能会在未来的Qt版本中发生变化。

注意

在NTFS文件系统上,出于性能原因,默认情况下禁用了所有权和权限检查。要启用它,请包含以下行:

Q_CORE_EXPORT = extern()

权限检查通过将qt_ntfs_permission_lookup增加和减少1来开启和关闭。

qt_ntfs_permission_lookup++ # turn checking on
qt_ntfs_permission_lookup-- # turn it off again

注意

由于这是一个非原子全局变量,只有在主线程以外的任何线程启动之前或主线程以外的所有线程结束之后,才安全地增加或减少qt_ntfs_permission_lookup

注意

从 Qt 6.6 开始,变量 qt_ntfs_permission_lookup 已被弃用。请使用以下替代方案。

管理权限检查的安全且简单的方法是使用RAII类QNtfsPermissionCheckGuard

def complexFunction():

    QNtfsPermissionCheckGuard permissionGuard # check is enabled
    # do complex things here that need permission check enabled
} // as the guard goes out of scope the check is disabled

如果您需要更细粒度的控制,可以使用以下函数来管理权限:

qAreNtfsPermissionChecksEnabled() # check status
qEnableNtfsPermissionChecks() # turn checking on
qDisableNtfsPermissionChecks() # turn it off again
class FileHandleFlag

(继承自 enum.Flag) 此枚举用于打开文件时指定仅适用于文件而不适用于通用 QIODevice 的附加选项。

常量

描述

QFileDevice.AutoCloseHandle

传递给open()的文件句柄应由close()关闭,默认行为是close仅刷新文件,应用程序负责关闭文件句柄。当通过名称打开文件时,此标志将被忽略,因为Qt始终拥有文件句柄并必须关闭它。

QFileDevice.DontCloseHandle

如果没有显式关闭,当QFile对象被销毁时,底层文件句柄将保持打开状态。

class MemoryMapFlag

(继承自 enum.Flag) 此枚举描述了可能由 map() 函数使用的特殊选项。

常量

描述

QFileDevice.NoOptions

没有选项。

QFileDevice.MapPrivateOption

映射的内存将是私有的,因此任何修改对其他进程不可见,也不会写入磁盘。当内存取消映射时,任何此类修改都将丢失。未指定在创建映射后对文件所做的修改是否通过映射的内存可见。此枚举值在Qt 5.4中引入。

__init__()
__init__(parent)
Parameters:

父对象QObject

error()
Return type:

FileError

返回文件错误状态。

I/O设备状态返回一个错误代码。例如,如果open()返回false,或者读/写操作返回-1,可以调用此函数来找出操作失败的原因。

另请参阅

unsetError()

fileName()
Return type:

字符串

返回文件的名称。QFileDevice中的默认实现返回一个空字符串。

fileTime(time)
Parameters:

时间FileTime

Return type:

QDateTime

返回由time指定的文件时间。如果无法确定时间,则返回QDateTime()(一个无效的日期时间)。

flush()
Return type:

布尔

将任何缓冲的数据刷新到文件中。如果成功,返回true;否则返回false

handle()
Return type:

整数

返回文件的文件句柄。

这是一个小的正整数,适合与C库函数一起使用,例如fdopen()fcntl()。在使用文件描述符进行套接字操作的系统上(即Unix系统,但不包括Windows),该句柄也可以与QSocketNotifier一起使用。

如果文件未打开,或出现错误,handle() 返回 -1。

另请参阅

QSocketNotifier

map(offset, size[, flags=QFileDevice.MemoryMapFlag.NoOptions])
Parameters:
Return type:

PyObject

将文件的size字节从offset开始映射到内存中。文件应该被打开以便映射成功,但在内存映射后文件不需要保持打开状态。当QFile被销毁或使用此对象打开新文件时,任何未取消映射的映射将自动取消映射。

映射将具有与文件相同的打开模式(读取和/或写入),除非使用MapPrivateOption,在这种情况下,始终可以写入映射的内存。

任何映射选项都可以通过 flags 传递。

返回指向内存的指针,如果出现错误则返回None

另请参阅

unmap()

permissions()
Return type:

Permission的组合

返回文件的QFile::Permission的完整按位或组合。

另请参阅

setPermissions()

resize(sz)
Parameters:

sz – int

Return type:

布尔

设置文件大小(以字节为单位)sz。如果调整大小成功,则返回true;否则返回false。如果sz大于当前文件大小,新字节将被设置为0;如果sz较小,则文件将被截断。

警告

如果文件不存在,此函数可能会失败。

另请参阅

size()

setFileTime(newDate, fileTime)
Parameters:
Return type:

布尔

fileTime指定的文件时间设置为newDate,如果成功则返回true;否则返回false。

注意

文件必须打开才能使用此函数。

另请参阅

fileTime() FileTime

setPermissions(permissionSpec)
Parameters:

permissionSpecPermission 的组合

Return type:

布尔

将文件的权限设置为指定的permissions。如果成功,则返回true,如果无法修改权限,则返回false

警告

此函数不操作ACLs,这可能会限制其有效性。

另请参阅

permissions()

unmap(address)
Parameters:

地址 – str

Return type:

布尔

取消映射内存 address

如果取消映射成功,则返回true;否则返回false。

另请参阅

map()

unsetError()

将文件的错误设置为 NoError

另请参阅

error()