Dateigröße bestimmen



  • Neues Thema neuer Thread 😉

    Also ich wollte die Größe einer Datei bestimmen, hier meine Version

    ifstream logfile(position);
    
    	unsigned int bytecounter=0;
    
    	char zeichen;
    	do
    	{
    		logfile>>zeichen;
    		bytecounter+=1;
    	}while(!logfile.eof());
    
    	logfile.close();
    

    Position enthält den Pfad der Datei.
    Nur Arbeitet meine Version ungenau, hab das mit einer textdatei versucht -> Windows sagt 644 Bytes, mein programm sagt 463 ?

    Dann hab ich gegoogelt und diese Version gefunden die auch 644 anzeigt, nur ich verstehe nicht wie sie funktioniert?

    ifstream eingabe(position, ios_base::in);
    
    unsigned int dateiLaenge;
    eingabe.seekg(0L, ios::end);
    dateiLaenge = eingabe.tellg();
    eingabe.close();
    cout<<dateiLaenge<<endl;
    

    Was ist bei mir falsch?



  • Ok ich habe meine Version nun überarbeitet:

    unsigned int bytecounter=0;
    
    	char zeichen;
    
    	while(!logfile.eof())
    	{
    		bytecounter = logfile.tellg();
    		logfile>>zeichen;	
    	};
    
    	logfile.close();
    

    Aber igendwie mag ich sie nicht, weil sie mir zu umständlich vorkommt, was würdet ihr anders machen? Kann man nicht einfacher ein zeichen weiter gehen?



  • Noch ein Nachtrag:
    Das Ding ist viel zu langsam, damit eine über 100mb große datei zu untersuchen ist arg schlecht



  • Hey,

    probiere mal folgendes:

    unsigned int length;
    
      // Öffnen der Datei
      ifstream logfile(position);
    
      // An das Ende der Datei springen 
      logfile.seekg (0, ios::end);
    
      // Ermittle Dateiposition (für die Dateigröße)
      length = logfile.tellg();
    
      cout << "Größe der Datei: " << length << endl;
    

    Sollte erheblich schneller sein

    MfG Roman1311



  • Stimmt, sehr sehr erheblich, danke sehr.



  • Einfach mal in unsere FAQ schauen:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39469


Anmelden zum Antworten