QStorageInfo类提供了系统当前挂载的存储和驱动器的相关信息,包括它们的空间,挂载点,标签名,文件系统名。
一般,我们可以使用特定的文件或目录来创建一个QStorageInfo类的对象,也可以使用其静态方法mountedVolumes()来得到当前系统中挂载的所有文件系统的列表;还可以使用root()静态方法,来获取根文件系统的相关信息,在Linux平台是即为"/"目录,在Windows平台上即为系统盘。
该类的一般使用形式如下:
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";注意,该类会缓存所获得的信息,我们可以在必要的使用调用它的refresh()方法来使缓存失效,从而获得最新的信息。下面,我们使用一个Qt控制台程序,来遍历当前电脑上的所有磁盘信息:
#include <QCoreApplication> #include <QStorageInfo> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QList<QStorageInfo> list = QStorageInfo::mountedVolumes(); qDebug() << "Volume Num: " << list.size(); for(QStorageInfo& si : list) { qDebug() << "Name: " << si.name(); qDebug() << "Block Size: " << si.blockSize(); qDebug() << "Bytes Avaliable: " << si.bytesAvailable(); qDebug() << "Bytes Free: " << si.bytesFree(); qDebug() << "Bytes Total: " << si.bytesTotal(); qDebug() << "Display Name: " << si.displayName(); qDebug() << "File System Type: " << si.fileSystemType(); qDebug() << "Is ReadOnly: " << si.isReadOnly(); qDebug() << "Is Root: " << si.isRoot(); } qDebug() << QStorageInfo::root().device(); return a.exec(); } 运行结果如下:可以看出,当前系统上有4个驱动器,前面三个是本地硬盘,分别对应着系统,软件,文档三个分区,第四个没有名字的光驱。大家也可以在自己电脑上自行测试。
