QFileDevice 类【官翻】

QFileDevice 类

QFileDevice类提供用于读取和写入打开文件的接口。

Header:#include < QFileDevice >
qmake:QT += core
Inherits:QIODevice
Inherited By:QFile and QSaveFile

一、详述

QFileDevice是可以读取和写入文本以及二进制文件和资源的I / O设备的基类。 QFile提供主要功能,QFileDevice通过提供可以对已由QFile或QTemporaryFile打开的文件执行的所有操作,来与其他文件设备(如QTemporaryFile) 共享功能,作为基类。

另请参见QFile和QTemporaryFile。

二、公共类型

  1. enum FileError
    该枚举描述了error() 函数可能返回的错误。

    ConstantValueDescription
    NoError0没有发生错误。
    ReadError1从文件读取时发生错误。
    WriteError2写入文件时发生错误。
    FatalError3发生致命错误。
    ResourceError4资源不足(例如,打开的文件过多,内存不足等)
    OpenError5无法打开该文件。
    AbortError6该操作被中止。
    TimeOutError7发生超时。
    UnspecifiedError8发生未指定的错误。
    RemoveError9无法删除该文件。
    RenameError10该文件无法重命名。
    PositionError11文件中的位置无法更改。
    ResizeError12无法调整文件大小。
    PermissionsError13无法访问该文件。
    CopyError14无法复制该文件。
  2. enum FileHandleFlag
    flags FileHandleFlags
    打开文件时使用此枚举来指定仅适用于文件而不适用于常规QIODevice的其他选项。

    ConstantValueDescription
    AutoCloseHandle0x0001传递给open() 的文件句柄应由close() 关闭,默认行为是close仅刷新文件,而应用程序负责关闭文件句柄。 当按名称打开文件时,此标志将被忽略,因为Qt始终拥有文件句柄并且必须将其关闭。
    DontCloseHandle0如果未显式关闭,则销毁QFile对象时,基础文件句柄将保持打开状态。
  3. enum FileTime
    这个枚举由fileTime() 和setFileTime() 函数使用。

    ConstantValueDescription
    FileAccessTime0最近一次访问文件的时间(例如读或写) 。
    FileBirthTime1创建文件时(在UNIX上可能不受支持) 。
    FileMetadataChangeTime2文件的元数据上次更改的时间。
    FileModificationTime3最近一次修改文件的时间。
  4. enum MemoryMapFlags
    该枚举描述了map() 函数可以使用的特殊选项。

    ConstantValueDescription
    NoOptions0没有选择。
    MapPrivateOption0x0001映射的内存将是私有的,因此任何修改对其他进程都不可见,也不会写入磁盘。 当取消映射内存时,任何此类修改都将丢失。 尚不确定在创建映射后对文件所做的修改是否可以通过映射的内存看到。 这个枚举值是在Qt 5.4中引入的。
  5. enum Permission
    flags Permissions
    permission() 函数使用此枚举来报告文件的权限和所有权。 可以将这些值进行或运算以测试多个权限和所有权值。

    ConstantValueDescription
    ReadOwner0x4000文件的所有者可以读取该文件。
    WriteOwner0x2000该文件可由文件所有者写。
    ExeOwner0x1000该文件可由文件所有者执行。
    ReadUser0x0400用户可以读取该文件。
    WriteUser0x0200该文件可由用户写入。
    ExeUser0x0100该文件可由用户执行。
    ReadGroup0x0040该组可读该文件。
    WriteGroup0x0020该文件可由组写。
    ExeGroup0x0010该文件可由组执行。
    ReadOther0x0004任何人都可以读取该文件。
    WriteOther0x0002该文件是任何人都可写的。
    ExeOther0x0001任何人都可以执行该文件。

    警告:由于Qt支持的平台不同,因此ReadUser,WriteUser和ExeUser的语义取决于平台:在Unix上,返回文件所有者的权限,在Windows上,返回当前用户的权限。 在将来的Qt版本中,此行为可能会更改。

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

     extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
    

    然后通过将qt_ntfs_permission_lookup递增和递减1来打开和关闭权限检查。

     qt_ntfs_permission_lookup++; // turn checking on
     qt_ntfs_permission_lookup--; // turn it off again
    

三、公共函数

  1. virtual ~QFileDevice()
  2. QFileDevice::FileError error() const 返回文件错误状态
    I / O设备状态返回错误代码。 例如,如果open() 返回false,或者读/写操作返回-1,则可以调用此函数以找出操作失败的原因。
  3. void unsetError() 设置文件的错误为QFileDevice :: NoError。
  4. virtual QString fileName() const 返回文件名
    QFileDevice中的默认实现返回一个空字符串。
  5. QDateTime fileTime(QFileDevice::FileTime time) const 返回由时间指定的文件时间
    如果无法确定时间,请返回QDateTime() (无效的日期时间) 。
  6. bool setFileTime(const QDateTime &newDate, QFileDevice::FileTime fileTime)
    将fileTime指定的文件时间设置为newDate,如果成功,则返回true;否则,返回true。 否则返回false。
    注意:必须打开文件才能使用此功能。
  7. bool flush()
    将所有缓冲的数据刷新到文件中。 如果成功,则返回true;否则,返回false。 否则返回false。
  8. int handle() const 返回文件的文件句柄
    这是一个小的正整数,适合与C库函数一起使用,例如fdopen() 和fcntl() 。 在将文件描述符用于套接字的系统(即Unix系统,但不用于Windows) 上,句柄也可以与QSocketNotifier一起使用。
    如果文件未打开,或者有错误,则handle() 返回-1。
  9. uchar * map(qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags = NoOptions)
    将文件的大小字节从偏移量开始映射到内存中。 应该打开文件以使映射成功,但是在映射内存后文件不必保持打开状态。 当QFile被销毁或使用此对象打开新文件时,所有尚未取消映射的地图都将自动取消映射。
    映射将具有与文件相同的打开模式(读和/或写) ,但使用MapPrivateOption时除外,在这种情况下,始终可以写入映射的内存。
    任何映射选项都可以通过标志传递。
    如果存在错误,则返回指向内存或nullptr的指针。
  10. bool unmap(uchar *address) 取消映射内存地址
    如果取消映射成功,则返回true;否则,返回false。 否则为假。
  11. virtual QFileDevice::Permissions permissions() const
    返回该文件QFile :: Permission的完整OR-ed组合。
  12. virtual bool setPermissions(QFileDevice::Permissions permissions)
    将文件的权限设置为指定的权限。 如果成功,则返回true;如果无法修改权限,则返回false。
    警告:此功能不处理ACL,这可能会限制其有效性。
  13. virtual bool resize(qint64 sz)
    设置文件大小(以字节为单位) sz。 如果调整成功,则返回true;否则,返回true。 否则为假。 如果sz大于当前文件,则新字节将设置为0;否则,新字节将被设置为0。 如果sz较小,则文件将被截断。
    警告:如果文件不存在,此功能可能会失败。

四、重新实现的公共函数

  1. virtual bool atEnd() const override
  2. virtual void close() override
  3. virtual bool isSequential() const override
  4. virtual qint64 pos() const override
  5. virtual bool seek(qint64 pos) override
  6. virtual qint64 size() const override

五、重新实现受保护的函数

  1. virtual qint64 readData(char *data, qint64 len) override
  2. virtual qint64 readLineData(char *data, qint64 maxlen) override
  3. virtual qint64 writeData(const char *data, qint64 len) override
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值