Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Jak sprawdzić rozmiar pliku

Ostatnio zmodyfikowano 2014-04-02 18:52
Autor Wiadomość
Zdziwiony
Temat założony przez niniejszego użytkownika
[C++] Jak sprawdzić rozmiar pliku
» 2014-04-02 15:58:52
Witam. Mam do Was pytanie takie jak w temacie tj. Jak sprawdzić wielkość DOWOLNEGO pliku z poziomu języka C++ ?

Pozdrawiam.
P-107616
pekfos
» 2014-04-02 16:09:25
GetFileSizeEx()
P-107618
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2014-04-02 16:30:04
Jeśli można zapytać, to czy istnieje może też funkcja do odczytu rozmiaru całego katalogu ? Byłoby to o niebo wygodniejsze :)
P-107620
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2014-04-02 18:38:35
No cóż coś "skleciłem" oto kod, który w zamierzeniu ma policzyć wielkość wszystkich plików w folderze i wyświetlić ilość bajtów.

kod:
C/C++
void Rozmiar()
{
    char SHGFP_TYPE_CURRENT;
    char AppDataFolder[ MAX_PATH ];
    SHGetFolderPathA( 0, CSIDL_LOCAL_APPDATA, 0, SHGFP_TYPE_CURRENT, AppDataFolder );
    string temp, temp2, temp3, plik;
    long long rozmiar, rozmiar2, rozmiarplus;
    rozmiar2 = 0;
    temp2 = AppDataFolder;
    temp = temp2 + "\\Temp\\*.*";
    temp3 = temp2 + "\\Temp\\";
    _finddata_t danePliku;
    long uchwyt = _findfirst( temp.c_str(), & danePliku );
    int SzukamDalej = _findnext( uchwyt, & danePliku );
    do {
        SzukamDalej = _findnext( uchwyt, & danePliku );
        plik = temp3 + danePliku.name;
        fstream fs;
        fs.open( plik.c_str(), ios::binary | ios::in );
        // przesun pozycje na koniec
        fs.seekg( 0, ios::end );
        // odczytaj pozycje w pliku -> rozmiar pliku
        rozmiar = fs.tellg();
        // wroc na poczatek pliku!
        fs.seekg( 0, ios::beg );
        //...
       
       
       
        rozmiarplus = rozmiar2 + rozmiar;
       
    } while( SzukamDalej != - 1 );
   
   
   
    ostringstream ss;
    ss << rozmiarplus;
    string str = ss.str();
    string liczba;
    liczba = "Usunięto:~ " + str + "        bajtów";
    cout << liczba << "\n" << plik << "\n";
    system( "pause" );
   
}

Efekt działania kodu: Wielkość wszystkich plików w folderze to -1....

Podpowie ktoś gdzie jest błąd ? (sądzę, że robię coś źle przy sumowaniu rozmiarów, ale nie wiem jak to poprawić)

Pozdrawiam.
P-107624
pekfos
» 2014-04-02 18:48:17
Sumowania rozmiarów tu w ogóle nie ma.
P-107625
Zdziwiony
Temat założony przez niniejszego użytkownika
» 2014-04-02 18:52:51
W moim zamierzeniu :

C/C++
char SHGFP_TYPE_CURRENT;
char AppDataFolder[ MAX_PATH ];
SHGetFolderPathA( 0, CSIDL_LOCAL_APPDATA, 0, SHGFP_TYPE_CURRENT, AppDataFolder );
string temp, temp2, temp3, plik;
long long rozmiar, rozmiar2, rozmiarplus;
rozmiar2 = 0;
temp2 = AppDataFolder;
temp = temp2 + "\\Temp\\*.*";
temp3 = temp2 + "\\Temp\\";
_finddata_t danePliku;
long uchwyt = _findfirst( temp.c_str(), & danePliku );
int SzukamDalej = _findnext( uchwyt, & danePliku );
do {
    SzukamDalej = _findnext( uchwyt, & danePliku );
    plik = temp3 + danePliku.name;
    fstream fs;
    fs.open( plik.c_str(), ios::binary | ios::in );
    // przesun pozycje na koniec
    fs.seekg( 0, ios::end );
    // odczytaj pozycje w pliku -> rozmiar pliku
    rozmiar = fs.tellg(); //zmienna przechowująca rozmiar jakiegoś pliku po zapętleniu przyjmuje inną wartość
    // wroc na poczatek pliku!
    fs.seekg( 0, ios::beg );
    //...
   
   
   
    rozmiarplus = rozmiar2 + rozmiar; //tutaj do zera dodaje za każdym razem wartość ze zmiennej "rozmiar"
   
} while( SzukamDalej != - 1 );



ostringstream ss;
ss << rozmiarplus;
string str = ss.str();
string liczba;
liczba = "Usunięto:~ " + str + "        MB";
cout << liczba << "\n" << plik << "\n"; //wyswietlam poprzez zmienną "rozmiarplus" sumę bajtów
system( "pause" );

A w rzeczywistości to nic nie robi ;o ? W takim razie jak mam to sumować ?
P-107626
« 1 »
  Strona 1 z 1