Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Bytegröße einer Datei ermitteln?

  1. #1
    Registrierter Benutzer Avatar von Rebell
    Registriert seit
    10.07.2002
    Ort
    Dresden
    Beiträge
    62

    Bytegröße einer Datei ermitteln?

    Wie kann ich mir die Größe einer Datei zurückgeben?
    Eine Funktion lof() oder fsizeof() gibt es nicht in stdio.h
    to be famous is so nice
    http://get-mike.de
    M:ke

  2. #2
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Beispiel:
    Code:
    struct stat buf;
    if(stat("dateiname", &buf) == 0)
    {
      printf("Größe der Datei: %i\n", buf.st_size);
    }
    Nähere Infos in der man-Page zu stat.

    c ya,
    Tobias

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Man könnte auch bytesize=system("du -b <Datei>") nehmen (wenn denn system nicht auch noch den Datei-Namen returnt, so wie bash), aber das ist Plattform-spezifisch (wegen dem du).

  4. #4
    Registrierter Benutzer Avatar von Rebell
    Registriert seit
    10.07.2002
    Ort
    Dresden
    Beiträge
    62
    Hmm... eigentlich ist es nicht wesentlich Unix-spezifisch, allgemein in C würde ich gern wissen wie man die Bytegröße einer binären Datei herrausfindet.
    to be famous is so nice
    http://get-mike.de
    M:ke

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Das einfachste ist ganz einfach die Datei lesend zu öffnen und sie Zeichen für Zeichen (Byte) einzulesen, bis das Dateiende erreicht ist
    Bei Spielfilmen/Movies kann das aber etwas dauern ...

    Über file-pointer am Datei-Anfang u. Datei-Ende müsste es auch gehen.

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.05.2001
    Ort
    Lipperland
    Beiträge
    24
    das sinnvollste ist immer noch das mit fstat zu machen. Das läuft unter jedem OS.

    Gruß,
    Marko
    My systems:
    AMD Athlon XP 1700MHz, 512MB RAM,Geforce 4200
    AMD Duron 1300Mhz, 512MB

  7. #7
    Registrierter Benutzer Avatar von Rebell
    Registriert seit
    10.07.2002
    Ort
    Dresden
    Beiträge
    62
    Jap, diese while != eof() schleife kenn ich, die funktioniert aber nur bei nicht-binären Dateien, das mit dem Filepointer klingt interessant, aber BEISPIELCODE! *g*
    to be famous is so nice
    http://get-mike.de
    M:ke

  8. #8
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Man kann die Datei ja im Binär-Format öffnen, also mit rb und die Bytes einfach einlesen, ohne die wirklich zu verwenden, aber fstat ist wohl besser.

  9. #9
    Registrierter Benutzer
    Registriert seit
    17.07.2002
    Beiträge
    9
    Der System-Call fstat() ist POSIX-spezifisch. Man kann's aber auch in reinem ANSI C hinbekommen.
    Code:
    #include <stdio.h>
    
    #define FILENAME "/pfad/zur/datei"
    
    
    int main(int argc, char *argv[]) {
      FILE *fp;
      
      if ((fp = fopen(FILENAME, "rb")) != NULL) {
        if (fseek(fp, 0, SEEK_END) == 0) {
          long pos;
          
          if ((pos = ftell(fp)) != -1L) {
    	printf("Dateigröße beträgt %lu Bytes.\n", pos);
          } else {
    	perror(FILENAME);
          }
        } else {
          perror(FILENAME);
        }
    
        fclose(fp);
      } else {
        perror(FILENAME);
      }
      
      return 0;
    }
    --Kai

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •