Wie bekomm ich die Dateigröße einer Datei raus ?

Sneaker

Mitglied
Hallo
Hab in der suchfunktion nix gefunden und frage deshalb wie bekomm ich in C++ die dategröße einer datei raus ?
geht das vielleicht irgendwie über fstream ?
 
Es gibt zwei Möglichkeiten:

Entweder mit

_filelength(int handle); (in Visual C++)
oder mit
fseek(handle ,0,SEEK_END);

Ersteres ist aber leider kein ANSI-Standard.
 
mein lehrer meint es sollte anders gehen als über fopen und so halt ohne C in C++ halt. ich probier mal fseek aus.
 
Natürlich kannst Du es ohne fopen machen.
Hier ist ein Beispiel:

Code:
ULONG laenge_code(const char *pktxt)
{
  ifstream klar( pktxt, ios::binary | ios::in );// dateilänge bestimmen
  if (!klar)                  // datei dazu öffnen
  {
          cerr « "Kann Datei: " « pktxt « " nicht lesen oder finden" « endl;
          return 0;                         // länge 0 ist ein Fehler!!
  }
  char c;
  ULONG laenge = 0;                   // datei bis zu einer länge von 4GByte
  klar.get(c);                        // zeichen ...
  while ( klar.good() )
  {
            ++laenge;                 // zählen
          klar.get(c);
  }
  klar.close();
  return laenge;
}

Das Beispiel verwendet die input-stream Klasse und die ist C++

Die Klasse hat ebenfalls ein seek

ofstream.seekp (int streampos);

ofstream.seekp (int streamoff, int seek_dir);

Konstante Bedeutung seek_dir
ios::beg Der Offset wird vom Dateianfang an gemessen.
ios::cur Der Offset wird von der momentanen Position an gemessen.
ios::end Der Offset wird vom Dateiende an gemessen.
 
Zuletzt bearbeitet:
wenn ich das mit ner schleife mache wird mich mein info lehrer umbringen ;)
weil ich schreib an einem kompremierungsprogramm und das soll ja gerade schnell gehen und wnen ich dann einmal durch hietze verschwende ich zu viel zeit !
aber das mit seek probier ich mal aus
wenn ihr das noch ein bsischen mit seek spezifizieren könnt ich brauch die seek anweisung um die anzahl der byte herraus zu bekommen die in der datei enthalten sind. müsste das dann ofstream.seekp (0, ios::end); sein um von position 0 bis zum ende der datei die zeichen zu zählen oder ?

edit: hmmm ein fehler hab ich jetzt aber bei mir gibt es kein seekp !

edit: oh das seekp gibs ja nur bei ofstream klasse. aber ich brauch irgend ne methode die resourcenschonend ist und irgendwie ohne gross die zeichen zu zählen und wenns geht in C++ und bitte ohne MFC mein lehrer meinte irgendwas mit Winapp oder so hab ich abe rnicht mehr genau mit bekommen...
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück