1. 程式人生 > >VC 獲取磁碟碟符剩餘空間,CJSON格式輸出

VC 獲取磁碟碟符剩餘空間,CJSON格式輸出

void  GetPlace(char  *datajson)
{
    ULARGE_INTEGER nFreeBytesAvailable;
    ULARGE_INTEGER nTotalNumberOfBytes;
    ULARGE_INTEGER nTotalNumberOfFreeBytes;
    DWORD  msg = 1;
    DWORD statue  = 0;
    WCHAR Drive[MAX_PATH] = {0};
     char ch[3] = "c";
    char FreePlace[1024] =  {0};
    char TotalPlace[1024] = {0};
    GetLogicalDriveStrings(MAX_PATH, Drive);
    wstring myDrive = L"";
    int i = 0;
    cJSON *root = cJSON_CreateObject();
    cJSON *FreeP = cJSON_CreateArray();
    cJSON *TotalP = cJSON_CreateArray();
    
    while (Drive[i] != '\0' || Drive[i+1] != '\0')//搜尋陣列嘗試得到碟符資訊
    {
        myDrive = Drive[i];
        myDrive = myDrive + L":";
        i+= 4;
        msg  = GetDiskFreeSpaceEx(myDrive.c_str(),&nFreeBytesAvailable,&nTotalNumberOfBytes,&nTotalNumberOfFreeBytes);
        statue = GetLastError();
        if (msg)
        {
            cJSON *tempF = cJSON_CreateObject();
            cJSON *tempT = cJSON_CreateObject();
            double Totalspace = nTotalNumberOfBytes.QuadPart/1024./1024./1024.;//得到磁碟總空間,單位為G
            char get_Totalfree[50] = {0};
            sprintf(get_Totalfree,"%.2lf",Totalspace);
            cJSON_AddItemToObject(tempF,"disk",cJSON_CreateString(ch));
            cJSON_AddItemToObject(tempF,"vale",cJSON_CreateString(get_Totalfree));
            cJSON_AddItemToArray(FreeP,tempF);
            double Freespace = nTotalNumberOfFreeBytes.QuadPart/1024./1024./1024.;//得到磁碟剩餘空間,單位為G        
            char get_free[50] = {0};
            sprintf(get_free,"%.2lf",Freespace);        
            cJSON_AddItemToObject(tempT,"disk",cJSON_CreateString(ch));
            cJSON_AddItemToObject(tempT,"vale",cJSON_CreateString(get_free));        
            cJSON_AddItemToArray(TotalP,tempT);
        }
                ch[0]++;
    }
    char GetMsg[3] ={0};
    sprintf(GetMsg,"%d",msg);
    cJSON_AddNumberToObject(root,"status:",statue);
    cJSON_AddStringToObject(root,"GetDiskMsg",GetMsg);

    cJSON_AddItemToObject(root,"FreePlace",FreeP);
    cJSON_AddItemToObject(root,"TotalPlace",TotalP);
    char getdataF[1024] = {0};
    strcpy(datajson ,cJSON_PrintUnformatted(root));
    cJSON_Delete(root);
    //cJSON_Print(root));
}

///////////////////////////////////////

輸出:

{
        "status:":      0,
        "GetDiskMsg":   "1",
        "FreePlace":    [{
                        "disk": "c",
                        "vale": "80.00"
                }, {
                        "disk": "d",
                        "vale": "80.00"
                }, {
                        "disk": "e",
                        "vale": "80.00"
                }, {
                        "disk": "f",
                        "vale": "95.51"
                }],
        "TotalPlace":   [{
                        "disk": "c",
                        "vale": "22.71"
                }, {
                        "disk": "d",
                        "vale": "0.29"
                }, {
                        "disk": "e",
                        "vale": "1.65"
                }, {
                        "disk": "f",
                        "vale": "2.93"
                }]
}