最近在用Qt写一个文件管理器,想获取磁盘的总空间大小以及剩余空间大小等等信息。
在网上找到一个不错的解决方法。
本文转自remote_roamer的博客:http://blog.csdn.net/remote_roamer/article/details/6709734
如有版权问题,请联系我,我会删除。
定义头文件disktools.h
#ifndef DISKTOOLS_H
#define DISKTOOLS_H
#include "QDebug"
#include <windows.h>
class DiskTools
{
public:
DiskTools();
quint64 getDiskFreeSpace(QString driver);
};
#endif // DISKTOOLS_H
disktools.cpp
#include "disktools.h"
DiskTools::DiskTools()
{
}
quint64 DiskTools::getDiskFreeSpace(QString driver){
LPCWSTR lpcwstrDriver=(LPCWSTR)driver.utf16();
ULARGE_INTEGER liFreeBytesAvailable, liTotalBytes, liTotalFreeBytes;
if( !GetDiskFreeSpaceEx( lpcwstrDriver, &liFreeBytesAvailable, &liTotalBytes, &liTotalFreeBytes) )
{
qDebug() << "ERROR: Call to GetDiskFreeSpaceEx() failed.";
return 0;
}
return (quint64) liTotalFreeBytes.QuadPart/1024/1024/1024;
}
主程序中调用的代码
//获得盘符信息
driversList = QDir::drives();
qDebug()<<driversList.at(0).absoluteDir().absolutePath();
quint64 freeSpace = DiskTools::DiskTools().getDiskFreeSpace(QString("C:/"));
qDebug() << "剩余空间 " << freeSpace<< "GB";