21xrx.com
2024-11-05 19:25:16 Tuesday
登录
文章检索 我的文章 写文章
如何使用C++获取磁盘容量?
2023-06-24 03:15:59 深夜i     --     --
C++ 磁盘容量 获取

在C++编程过程中,有时候需要获取磁盘的容量,以便于进行存储计算或文件操作等操作。本文将介绍如何使用C++获取磁盘容量的方法。

方法一:使用Windows API

在Windows操作系统中,可以使用GetDiskFreeSpaceEx()函数来获取磁盘的容量信息。该函数的原型如下所示:

BOOL GetDiskFreeSpaceEx(

 LPCTSTR lpDirectoryName,

 PULARGE_INTEGER lpFreeBytesAvailableToCaller,

 PULARGE_INTEGER lpTotalNumberOfBytes,

 PULARGE_INTEGER lpTotalNumberOfFreeBytes

);

其中,lpDirectoryName参数代表磁盘分区的名称,例如"C:";lpFreeBytesAvailableToCaller参数代表空闲磁盘容量,lpTotalNumberOfBytes参数代表磁盘的总容量,lpTotalNumberOfFreeBytes参数代表磁盘的总空闲容量。

下面是使用GetDiskFreeSpaceEx()函数获取磁盘容量的示例代码:

#include

#include

using namespace std;

int main()

{

  ULARGE_INTEGER freeBytesAvailable, totalNumberOfBytes, totalNumberOfFreeBytes;

  TCHAR szFolderPath[] = _T("C:");

  BOOL bResult = GetDiskFreeSpaceEx(szFolderPath, &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes);

  if (bResult)

  {

    cout << "空闲磁盘容量:" << freeBytesAvailable.QuadPart / (1024 * 1024) << "MB" << endl;

    cout << "磁盘总容量:" << totalNumberOfBytes.QuadPart / (1024 * 1024) << "MB" << endl;

    cout << "磁盘总空闲容量:" << totalNumberOfFreeBytes.QuadPart / (1024 * 1024) << "MB" << endl;

  }

  return 0;

}

方法二:使用Shell API

在Windows操作系统中,还可以使用Shell API来获取磁盘容量信息,具体步骤如下:

1. 调用SHGetFileInfo()函数获取文件的信息。

2. 从文件信息中获取磁盘的盘符。

3. 使用GetDiskFreeSpaceEx()函数获取磁盘容量信息。

下面是使用Shell API获取磁盘容量的示例代码:

#include

#include

#include

using namespace std;

int main()

{

  TCHAR szFolderPath[MAX_PATH] = { 0 };

  SHGetFolderPath(NULL, CSIDL_DRIVES, NULL, SHGFP_TYPE_CURRENT, szFolderPath);

  for (int i = 0; szFolderPath[i]; i++)

  {

    if (szFolderPath[i] == '\\' && szFolderPath[i + 1] != '\0')

    {

      szFolderPath[i + 1] = '\0';

      break;

    }

  }

  ULARGE_INTEGER freeBytesAvailable, totalNumberOfBytes, totalNumberOfFreeBytes;

  BOOL bResult = GetDiskFreeSpaceEx(szFolderPath, &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes);

  if (bResult)

  {

    cout << "空闲磁盘容量:" << freeBytesAvailable.QuadPart / (1024 * 1024) << "MB" << endl;

    cout << "磁盘总容量:" << totalNumberOfBytes.QuadPart / (1024 * 1024) << "MB" << endl;

    cout << "磁盘总空闲容量:" << totalNumberOfFreeBytes.QuadPart / (1024 * 1024) << "MB" << endl;

  }

  return 0;

}

总结:

以上就是使用C++获取磁盘容量的两种方法,使用Windows API获取磁盘容量比较简单,但如果需要获取多个磁盘的容量,就需要使用Shell API来做了。无论哪种方法,都需要了解Windows操作系统提供的API接口。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复