如何确定 Qt 驱动器上有多少可用空间?

新手上路,请多包涵

我正在使用 Qt 并且想要一种独立于平台的方式来获取可用的可用磁盘空间。

我知道在 Linux 中我可以使用 statfs 并且在 Windows 中我可以使用 GetDiskFreeSpaceEx() 。我知道 boost 有办法, boost::filesystem::space(Path const & p)

但我不想要那些。我在 Qt 中,并希望以对 Qt 友好的方式进行操作。

我看了看 QDirQFileQFileInfo - 什么都没有!

原文由 dwj 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 514
2 个回答

我知道这是一个很老的话题,但仍然有人会发现它很有用。

自 QT 5.4 起, QSystemStorageInfo 已停产,取而代之的是一个新的类 QStorageInfo 这使得整个任务变得非常简单并且它是跨平台的。

 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()/1024/1024 << "MB";
qDebug() << "availableSize:" << storage.bytesAvailable()/1024/1024 << "MB";

代码已从 QT 5.5 文档 中的示例复制而来

原文由 Mr.Coffee 发布,翻译遵循 CC BY-SA 4.0 许可协议

Qt 5.4 中引入的新 QStorageInfo 类可以做到这一点(以及更多)。它是 Qt Core 模块的一部分,因此不需要额外的依赖项。

 #include <QStorageInfo>
#include <QDebug>

void printRootDriveInfo() {
   QStorageInfo storage = QStorageInfo::root();

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

   qDebug() << "name:" << storage.name();
   qDebug() << "filesystem type:" << storage.fileSystemType();
   qDebug() << "size:" << storage.bytesTotal()/1024/1024 << "MB";
   qDebug() << "free space:" << storage.bytesAvailable()/1024/1024 << "MB";
}

原文由 Violet Giraffe 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题