Dateigröße ermitteln
-
Ich möchte gern die Größe (kb) einer Windows datei ermitteln. Hat jemand ein codeschnipsel für mich???
-
Wennst fstream verwendest ist seekg und tellg Dein Freund
-
float filesizeKb(const fstream& f) { size_t p = f.tellg(); f.seekg(0L, ios::end); size_t ret = static_cast<float>(f.tellg()) / 1024.; f.seekg(p, ios::begin); return ret; }
Nur so ne Idee... ;). Die Routine sollte evtl. noch prüfen, ob die Datei offen ist etc....
EDIT: Pointer zurückgesetzt
-
ganz schlecht...der dateizeiger sollte wieder an die alte stelle zurückgesetzt werden.
-
Es war auch nur als Anregung gedacht.
Die Routine sollte evtl. noch prüfen, ob die Datei offen ist etc....
-
lustiger code. da wird eine stelle ja niemals erreicht.
-
schrieb:
lustiger code. da wird eine stelle ja niemals erreicht.
Ach du Clown . Ihr bringt mich noch komplett aus dem Konzept hier... *kaffeetrink*
-
so geht das aber auch nicht
size_t ret = static_cast<float>(f.tellg()) / 1024.;
^^^^
float
-
ich würde bytes zurückgeben, wenn der user daraus kbs draus machen will kann er das immer nocht, aber bei den jetzigen desing muss er mit ungenauigkeiten rechen wenn er bytes haben will
außerdem glaube ich nicht das seekg eine const methode ist ( der fstream f ist aber eine const referenz)
-
Habe dies mal aus meinem Buch geschnipselt:
ifstream file(datei, ios::in); if(file.good()) { file.seekg(0L, ios::end); //Dateizeiger ans Ende cout << file.tellg() << " Bytes" << endl; // tellg ermittelt Dateizeigerpos ab Dateianfang in Bytes }
Umrechnen in kB kannste sicher noch selbst
Code-Hacker