Datei größe ermitteln



  • Hi,

    Wie kann ich die größe einer Datei ermitteln?
    Normallerweise müsste das doch wie folgt funktionieren:
    Kann einer den fehler sehen?

    Datei.open("Info.txt");
    
    	if ( Datei.fail() )
    	{
    		system("Pause");
    		exit(0);
    	}
    
    Datei.seekg(ios::beg);
    	Datei.seekg(ios::end);
    	D_laenge=Datei.tellg();
    	Datei.seekg(ios::beg);
    
    //////////////////Weitere Bearbeitung:
    
    if((D_laenge-2)<=1)
    	{
    		cout<<" ERROR\n";
    		c_Datei=new char [1];
    	}
    	else
    	{
    
    	c_Datei=new char[D_laenge+1];
    
    	}
    
    	cout<<"Größe:  "<<sizeof(*c_Datei)<<"\n";
    
    	Datei.read(c_Datei,D_laenge);
    
             cout<<"\n\n\n\nInhalt:   ";
    	for(int i=0;i<=D_laenge;i++)
    	{
    		cout<<c_Datei[i];
    	}
    	cout<<"ENDE \n\n\n";
    


  • ja, Zeile 30. sizeof ist keine funktion die zur laufzeit ausgewertet wird.



  • sizeof gibt dir die Grösse eines Datentypen zurück. In deinem Falle die von char.



  • Das ist vieleicht nur ein Problem, trozdem danke aber die länge wird auch falsch ermittelt.
    In einer Datei wo folgendes drin steht:

    1
    2
    3
    4
    5
    6

    Zeigt er mir nur eine Größe von 4 an. Es fehlen also zeichen
    und bei der inhalt ausgabe wird nur 1 und 2 ausgegeben.



  • Matyr schrieb:

    Das ist vieleicht nur ein Problem, trozdem danke aber die länge wird auch falsch ermittelt.
    In einer Datei wo folgendes drin steht:

    1
    2
    3
    4
    5
    6

    Zeigt er mir nur eine Größe von 4 an. Es fehlen also zeichen
    und bei der inhalt ausgabe wird nur 1 und 2 ausgegeben.

    Du hast es eigentlich schon. Die Dateigröße kann man mit seekg+tellg ermitteln:

    size_t fsize = ifstream("datei.ext").seekg(0, ios_base::end).tellg();
    


  • タキオン、あなた日本人ですか?

    Tachyon schrieb:

    タチオン



  • chinesisch???

    aber egal

    danke es klappt. es werden nur immer 6 zeichen zuviel angezeigt aber das ist egal. genauer gesagt zeigt er die anzahl an zeilen mehr an.

    Mfg. Matyr



  • Matyr schrieb:

    chinesisch???

    Wäre mir neu das die Hiragana verwenden 😉 Wenn japanisch.

    Je nach Codierung für die Anzahl der Zeichen (nicht aber für die Dateigröße) entscheidend.

    cu André



  • diefrage schrieb:

    タキオン、あなた日本人ですか?

    Tachyon schrieb:

    タチオン

    Ne, bin ich nicht. Partikel und so? 😉



  • size_t ist meist ein unsigned integer. mit seekg klappt das also nur bei dateien mit der größe <= UINT_MAX.
    für die großen dateien kann man auf betriebssystem-spezifische funktionen zurückgreifen.
    _filelengthi64, _fstati64, GetFileSize, usw.

    mfg
    G


Anmelden zum Antworten