QStorageInfo 类

提供有关当前挂载的存储设备和驱动器的信息。 更多...

头文件 #include <QStorageInfo>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

公共函数

QStorageInfo()
QStorageInfo(const QString &path)
QStorageInfo(const QDir &dir)
QStorageInfo(const QStorageInfo &other)
~QStorageInfo()
intblockSize() const
qint64bytesAvailable() const
qint64bytesFree() const
qint64bytesTotal() const
QByteArraydevice() const
QStringdisplayName() const
QByteArrayfileSystemType() const
boolisReadOnly() const
boolisReady() const
boolisRoot() const
boolisValid() const
QStringname() const
voidrefresh()
QStringrootPath() const
voidsetPath(const QString &path)
QByteArraysubvolume() const
voidswap(QStorageInfo &other)
QStorageInfo &operator=(const QStorageInfo &other)
QStorageInfo &operator=(QStorageInfo &&&&other)

静态公共成员

QList<QStorageInfo>mountedVolumes()
QStorageInforoot()
booloperator!=(const QStorageInfo &first, const QStorageInfo &second)
booloperator==(const QStorageInfo &first, const QStorageInfo &second)

详细说明

允许检索有关卷空间的、挂载点、标签和文件系统名称的信息。

您可以通过将卷挂载点的路径作为构造函数参数传递来创建 QStorageInfo 的实例,也可以使用 setPath() 方法来设置它。静态的 mountedVolumes() 方法可用于获取所有挂载文件系统的列表。

QStorageInfo总是缓存检索到的信息,但您可以调用refresh()来使缓存失效。

以下示例检索系统根卷的常用信息,并打印这些信息。

    QStorageInfo storage = QStorageInfo::root();

    qDebug() << storage.rootPath();
    if (storage.isReadOnly())
        qDebug() << "isReadOnly:" << storage.isReadOnly();

    qDebug() << "name:" << storage.name();
    qDebug() << "fileSystemType:" << storage.fileSystemType();
    qDebug() << "size:" << storage.bytesTotal()/1000/1000 << "MB";
    qDebug() << "availableSize:" << storage.bytesAvailable()/1000/1000 << "MB";

成员函数文档

QStorageInfo::QStorageInfo()

构建一个空的QStorageInfo对象。

使用默认构造函数创建的对象将是无效的,因此不能使用。

另请参阅setPath(),isReady() 和 isValid()。

[显式构造函数] QStorageInfo::QStorageInfo(const QString &path)

构建一个新QStorageInfo对象,该对象提供关于path中挂载的卷的信息。

如果您传递一个目录或文件,QStorageInfo对象将引用此目录或文件所在的卷。您可以使用isValid()方法检查创建的对象是否正确。

以下示例演示如何获取应用程序所在的卷。建议始终检查该卷是否就绪且有效。

    QStorageInfo storage(qApp->applicationDirPath());
    if (storage.isValid() && storage.isReady()) {
        // ...
    }

另请参阅setPath()。

[显式构造函数] QStorageInfo::QStorageInfo(const QDir &dir)

构建一个新QStorageInfo对象,该对象提供包含dir文件夹的卷的信息。

QStorageInfo::QStorageInfo(const QStorageInfo &other)

构建一个新的QStorageInfo对象,它是other QStorageInfo对象的副本。

[exception不抛出] QStorageInfo::~QStorageInfo()

销毁QStorageInfo对象并释放其资源。

int QStorageInfo::blockSize() const

返回此文件系统的最佳传输块大小。

如果QStorageInfo无法确定大小或对象无效,则返回-1。

qint64 QStorageInfo::bytesAvailable() const

返回当前用户可用的字节数。如果当前用户是root用户或系统管理员,它返回可用总大小。

此大小可能小于或等于由bytesFree()函数返回的可用大小。

如果QStorageInfo对象无效,返回-1。

另请参阅bytesTotal() 和 bytesFree()。

qint64 QStorageInfo::bytesFree() const

返回卷中空闲字节数。注意,如果有磁盘配额,此值可能会大于bytesAvailable()返回的值。

如果QStorageInfo对象无效,返回-1。

另见 bytesTotal() 和 bytesAvailable

qint64 QStorageInfo::bytesTotal() const

返回以字节为单位的总卷大小。

如果QStorageInfo对象无效,返回-1。

另见 bytesFreebytesAvailable

QByteArray QStorageInfo::device() const

返回此卷的设备。

例如,在Unix文件系统(包括macOS)中,对于本地存储,它返回类似于 /dev/sda0 的devpath。在Windows中,对于本地存储,它返回以 \\\\?\\ 开头的UNC路径(换句话说,卷的GUID)。

另见 rootPath() 和 subvolume

QString QStorageInfo::displayName() const

如果可用,则返回卷的名称,否则返回根路径。

QByteArray QStorageInfo::fileSystemType() const

返回文件系统类型的名称。

这是一个与平台相关的函数,文件系统名称可以因不同的操作系统而异。例如,在Windows文件系统中,它们可以命名为 NTFS,在Linux中可以命名为 ntfs-3gfuseblk

另见 name

bool QStorageInfo::isReadOnly() const

如果当前文件系统受写保护,则返回true;否则返回false。

bool QStorageInfo::isReady() const

如果当前文件系统准备好工作,则返回true;否则返回false。例如,如果光盘卷未插入,则返回假。

请注意,直到卷就绪为止,fileSystemTypenamebytesTotalbytesFreebytesAvailable 将返回无效数据。

另见 isValid

bool QStorageInfo::isRoot() const

如果此QStorageInfo 表示系统根卷,则返回true;否则返回false。

在Unix文件系统中,根卷是挂载在 / 上的卷。在Windows中,根卷是安装操作系统的卷。

另见 root

bool QStorageInfo::isValid() const

如果由 rootPath 指定的 QStorageInfo 存在并且已正确挂载,则返回true。

另见 isReady

[静态] QList<QStorageInfo> QStorageInfo::mountedVolumes()

返回对应于当前已挂载文件系统列表的QStorageInfo对象列表。

在Windows上,此函数返回在 我的电脑 文件夹中可见的驱动器。在Unix操作系统上,它返回所有已挂载的文件系统列表(除了伪文件系统)。

默认返回所有已挂载的文件系统。

以下示例说明如何检索所有可用的文件系统,跳过只读的文件系统。

    foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {
        if (storage.isValid() && storage.isReady()) {
            if (!storage.isReadOnly()) {
                // ...
            }
        }
    }

另见 root

QString QStorageInfo::name() const

返回文件系统的可读名称,通常称为 标签

并非所有文件系统都支持此功能。在这种情况下,此方法返回的值可能为空。如果文件系统不支持标签,或者未设置标签,将返回空字符串。

在 Linux 上,检索卷标签需要系统中存在 udev

另请参阅fileSystemType()。

void QStorageInfo::refresh()

重置 QStorageInfo 的内部缓存。

QStorageInfo 缓存有关存储的信息以加快性能。在对象构造期间和/或将调用 setPath() 方法时检索信息。您必须通过调用此函数来手动重置缓存以更新存储信息。

[静态] QStorageInfo QStorageInfo::root()

返回一个表示系统根卷的 QStorageInfo 对象。

在 Unix 系统中,该调用返回根 ('/') 卷;在 Windows 上,表示安装操作系统的卷。

另请参阅isRoot()。

QString QStorageInfo::rootPath() const

返回此 QStorageInfo 对象表示的文件系统的挂载点。

在 Windows 上,如果卷未挂载到目录,则返回卷盘符。

请注意,rootPath() 返回的值是卷的实际挂载点,可能不等于传递给构造函数或 setPath() 方法的值。例如,如果您系统中只有一个根卷,并将 '/directory' 传递给 setPath(),则此方法将返回 '/'。

另请参阅setPath() 和 device()。

void QStorageInfo::setPath(const QString &path)

将此 QStorageInfo 对象设置为指定的 path 所在的已挂载文件系统。

path 可以是文件系统的根路径、目录或该文件系统中文件。

另请参阅rootPath()。

QByteArray QStorageInfo::subvolume() const

返回此卷的子卷名称。

一些文件系统类型允许在一个设备内部有多个子卷,这些子卷可以挂载在不同的路径(例如 Unix 上的 'bind' 挂载或 Btrfs 文件系统子卷)。如果检测到了子卷,该函数将返回其名称。子卷名称的格式针对每种文件系统类型都是特定的。

如果此卷不是从更大的文件系统的子卷挂载,或者无法检测到子卷,则此函数返回一个空字节数组。

另请参阅device()。

[noexcept] void QStorageInfo::swap(QStorageInfo &other)

other 交换此卷信息。此函数非常快速且决不会失败。

QStorageInfo &QStorageInfo::operator=(const QStorageInfo &other)

创建一个副本,将 QStorageInfo 对象 other 赋值给当前的 QStorageInfo 对象。

[noexcept] QStorageInfo &QStorageInfo::operator=(QStorageInfo &&other)

other 赋值给当前的 QStorageInfo 实例。

相关非成员函数

bool operator!=(const QStorageInfo &first, const QStorageInfo &second)

如果 firstQStorageInfo 对象引用了与 second 不同的驱动器或卷,则返回 true;否则返回 false。

bool operator==(const QStorageInfo &first, const QStorageInfo &second)

如果 firstQStorageInfo 对象引用了与 second 相同的驱动器或卷,则返回 true;否则返回 false。

请注意,比较两个无效的 QStorageInfo 对象的结果始终为正数。

© 2024 Qt 公司。此文档的贡献属于其各自的所有者。此文档受 GNU 自由文档许可版本 1.3 的条款约束,由自由软件基金会发布。Qt 及相关徽标是芬兰以及世界其他地区的 Qt 公司的商标。所有其他商标均属于其各自的所有者。