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