AMcoder - javascript, python, java, html, php, sql

GetDiskFreeSpaceEx, ազատ տարածքը չի փոխվում, չնայած ֆայլեր ստեղծելուն

Փորձում եմ ծրագիր գրել կոշտ սկավառակը ֆայլերով լցնելու համար։ Դա սկավառակի հուսալիությունը ստուգելու համար է: Ես գրում եմ ֆայլ, կարդում եմ, որ ստուգեմ դրա պարունակությունը և առաջ շարժվում, մինչև սկավառակը լցվի:

Բայց այն ֆունկցիան, որը ես օգտագործում եմ սկավառակի ազատ տարածությունը ստանալու համար, վերադարձնում է նույն արժեքը, երբ այն զանգում ես օղակով: Ես փնտրեցի ամենուր, բայց չգտա այս հարցի պատասխանը։

Երևույթը ցույց տալու համար մի պարզ ծրագիր գրեցի.

int main()
{
    for (int i = 0; i < 3; ++i)
    {
        write128MBFile("F:\\test\\fill\\" + to_string(i));
        cout << getFreeSpace("F:\\test\\fill") << endl;
    }
}

Վերադարձնում է

1 //Meaning that GetDiskFreeSpaceEx was successful
229311180800 //The amount of free bytes left
1
229311180800
1
229311180800

Ես հաստատեցի, որ ֆայլերը գրված են։ Սկավառակի ազատ տարածքը նույնիսկ ճիշտ է թարմացվում սկավառակի հատկությունների ցանկում:

Ահա getFreeSpace-ի կոդը.

static unsigned __int64 getFreeSpace(const char* dir)
{
    ULARGE_INTEGER freeBytesUser;
    ULARGE_INTEGER bytes;
    ULARGE_INTEGER freeBytesTotal;
    int i = GetDiskFreeSpaceEx(dir,&freeBytesUser,&bytes,&freeBytesTotal);
    cout << i << endl;
    return freeBytesUser.QuadPart;
}

Եվ ահա write128MBFile-ի կոդը.

void write128MBFile(string fileName)
{
    int fileSize = 1024*1024*128;
    int parts = 8;
    int partSize = fileSize / parts;//Buffer of about 16MB
    char c = 33;
    ofstream outfile;
    outfile.open(fileName, ios::binary | ios::trunc);
    for (int i = 0; i < parts; i++)
    {
        char *partToWrite = new char[partSize + 1];
        partToWrite[partSize] = '\0';
        for (int j = 0; j < partSize; j++)
        {
            partToWrite[j] = c;
        }
        outfile << partToWrite;
        outfile.flush();
        delete partToWrite;
    }
    outfile.close();
}

Չի կարելի մոռանալ հետևյալի մասին.

#include <iostream>
#include <fstream>
#include <windows.h>
#include <string>
using namespace std;

Արդյո՞ք ես ճիշտ չեմ օգտագործում գործառույթը: Ես բացարձակապես պատկերացում չունեմ, թե ինչ կարող է դա առաջացնել: Ես նման բան ունեմ գրված c#-ով, այն օգտագործում է DriveInfo դասը և այս խնդիրը չկա:

13.10.2014

  • Տարօրինակ է, ունե՞ք օգտվողների չափաբաժիններ ձեր ծավալի համար: 13.10.2014
  • Հնարավոր կրկնօրինակ՝ stackoverflow.com/ հարցեր/627131/ 13.10.2014
  • Նախքան սկսելը դուք պետք է ջնջեք գրացուցակի բովանդակությունը :) 13.10.2014

Պատասխանները:


1

Փոխարենը փորձեք օգտագործել freeBytesTotal-ը:

13.10.2014
  • Նույն արդյունքն է տալիս, բայց ես գտել եմ պատասխանը։ Տես իմ պատասխանը։ 13.10.2014

  • 2

    Կներեք տղերք, Հանս Պասանտը ճիշտ էր, շատ պարզ սխալ էր։ Կոդը վերագրանցում էր նույն չափի ֆայլերը, ուստի ազատ տարածությունը երբեք չփոխվեց:

    Ի դեպ, և՛ freeBytesUser-ը, և՛ freeBytesTotal-ը ինձ տալիս են նույն արդյունքները: Սա արվել է Windows 7 64 բիթով:

    13.10.2014
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..