Verzeichnisgröße ermitteln

Dieses Thema im Forum "C/C++" wurde erstellt von himero, 16.10.2006.

  1. himero

    himero Jungspund

    Dabei seit:
    10.10.2006
    Beiträge:
    15
    Zustimmungen:
    0
    Hallo!

    Brauch eure Hilfe bei folgendem Problem: Ich will ein C/C++ Programm schreiben, dass mir die Größe eines angegebenen Ordners/Verzeichnis anzeigt. Mit stat kann ich mir ja leider nur die Größe einzelner Files ermitteln lassen. Hat jemand eine Idee, wie ich das realisieren kann?

    Vielen Dank
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 hazelnoot, 16.10.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    unter linux kannst du schon die groesse eines verzeichnisses ermitteln da verzeichnisse wie dateien gehandhabt werden...

    unter windows ist dies nicht der fall

    mfg
    hazelnoot
     
  4. blinx

    blinx Eroberer

    Dabei seit:
    22.06.2006
    Beiträge:
    63
    Zustimmungen:
    0
  5. #4 hazelnoot, 16.10.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    ja schon aber er will es ja in einem programm verwaenden
     
  6. blinx

    blinx Eroberer

    Dabei seit:
    22.06.2006
    Beiträge:
    63
    Zustimmungen:
    0
    Dann ist das ja mit stat ebenso Schwachsinn.
     
  7. name

    name Inactive user

    Dabei seit:
    28.08.2004
    Beiträge:
    592
    Zustimmungen:
    0
    Ort:
    Wien->127.0.0.1
    Warum das rad neu erfinden?
    Einfach du nutzen:
    du -h verzeichniss
    fertig..
     
  8. #7 tuxlover, 16.10.2006
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    wieso ist der thread eigentlich unter C/C++ eingeordnet. jemand sollte ihn verschieben da wo er hingehört.
     
  9. name

    name Inactive user

    Dabei seit:
    28.08.2004
    Beiträge:
    592
    Zustimmungen:
    0
    Ort:
    Wien->127.0.0.1
    weil er das programm urspruenglich selber schreiben wollte? und zwar in C/++
     
  10. #9 hazelnoot, 16.10.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    wieso? unter linux/unix kann man die groesse eines verzeichnisses ermitteln(wegen dem oben genannten grund: unter linux sind dirs ebenfalls dateien) mit stat(st_size)!!!! aber auch nur unter linux/unix unter windows wuerde das nicht gehen!! probiers aus ich weis dass es geht!!!

    mfg hazelnoot
     
  11. #10 himero, 17.10.2006
    Zuletzt bearbeitet: 26.10.2006
    himero

    himero Jungspund

    Dabei seit:
    10.10.2006
    Beiträge:
    15
    Zustimmungen:
    0
    du, df und die ganzen Befehle bringen mir nichts - ich muss das ganze in einem c/++ Programm realisieren können. Hab das mal mit stat(st_size) versucht - siehe Code im Anhang. Leider bekomme ich bei Angabe eines Verzeichnisses nur die Blockgröße der Platte (4096).
     
  12. #11 hazelnoot, 17.10.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    dann koenntest du es noch so machen dass du einfach das verzeichniss durchgehst und alle groessen der dateien addierst ungefaehr so:

    Code:
    int funktionGetSizeOfDir(const char *dir){
       int size = 0;
    
       gehe das dir durch{
           hohle aktuelles file
           if(aktuelles file ist ein directory){/*das kannst in der statstruktur ueber den parameter mode mit der bitmask S_IFDIR herasfinden*/
                 size += funktionGetSizeOfDir(aktuelles file);
           }else{
                 size += sizeVonDemAktuellen file;
           }       
       } 
       return size;
    }
    
    denke so koenntest du das machen

    ich hoffe ich konnte dir helfen also ich wuerde es so machen waenn stat, wie ich gemerkt habe, nicht das gewuenschte ergebnis liefert.
     
  13. himero

    himero Jungspund

    Dabei seit:
    10.10.2006
    Beiträge:
    15
    Zustimmungen:
    0
    Vielen Dank schonmal!
    Das Gerüst schaut gut aus - nur habe ich Probleme mit der Umsetzung. Wie genau kann ich das dir durchgehen und die files holen?
     
  14. #13 hazelnoot, 17.10.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    aaalso das koenntest du folgendermassen loesen:
    Code:
    /*includes*/
    #include <sys/types.h>
    #include <dirent.h>
    
    /*bla bla bla*/
    
    DIR *dir;
    struct dirent *pnt;
    
    dir = opendir(dir);/*gibt bei fehler NULL zurueck*/
    
    /*nun hohlen wir uns die erste datei*/
    pnt = readdir(dir);
    printf("name der ersten file/dir: %d", (*pnt).d_name);
    
    tja denke das erklaert alles waenn du wiederhohlt readdir aufrufst bekommst du die 2te datei nochmal die dritte usw waenn alles wech ist bekommst NULL zurueck mit seekdir kannst dann drinnen umeinandersausen

    die dirent struktur enthaelt folgendes:
    (das sind die dinge an die ich mich erinnern kann)
    also einen long mit der nodenr glaub d_ino dann eben den verzeichnissnamen d_name und einen int d_namelen wo die laenge des dateinamens drinnensteht das ist das was ich im gedaechtnis habe koennen noch etwas mehr sein aber mehr hab ich bis jetzt noch nicht gebraucht :-)

    mfg
    hazelnoot
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 himero, 23.10.2006
    Zuletzt bearbeitet: 26.10.2006
    himero

    himero Jungspund

    Dabei seit:
    10.10.2006
    Beiträge:
    15
    Zustimmungen:
    0
    Hallo!

    Ich habe es nun geschafft, die Verzeichnisgröße zu ermitteln (siehe Code im Anhang). Leider gelingt dies nur, wenn ausschließlich reguläre Dateien in diesem Verzeichnis sind. Sobald ich ein weiteres Verzeichnis darin befindet, bekomme ich Probleme. Hat jemand eine Idee dies zu realisieren.

    Vielen Dank
     
  17. #15 supersucker, 23.10.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Du musst rekursiv über die Verzeichnisse gehen.

    Bei google findest du genug über Rekursion und Verzeichnisbäume.
     
Thema: Verzeichnisgröße ermitteln
Besucher kamen mit folgenden Suchen
  1. unix verzeichnis größe

    ,
  2. unix größe verzeichnisse

    ,
  3. unix größe verzeichnis ermitteln

    ,
  4. unix verzeichnisgröße,
  5. debian df verzeichnisgrösse,
  6. linux die größe von files in einem ordner ermitteln,
  7. sun solaris größe eines verzeichnis ermitteln,
  8. unix größe eines verzeichnisses ermitteln
Die Seite wird geladen...

Verzeichnisgröße ermitteln - Ähnliche Themen

  1. FUSE -> Dateisystem Typ ermitteln

    FUSE -> Dateisystem Typ ermitteln: Hallo, Ist es irgendwie möglich den Dateisystem Typ von einem mit FUSE gemounteten Dateisystem auszugeben? df -hT liefert leider nur diese...
  2. Gesamtgröße bestimmter Dateien ermitteln

    Gesamtgröße bestimmter Dateien ermitteln: Hallo, ich möchte die Gesamtgröße von bestimmten Dateien in einem Ordner ermitteln, also nicht "du -h" für den ges. Ordnerinhalt sondern eben nur...
  3. Brenner device ermitteln

    Brenner device ermitteln: Hallo Mit welchen Programmen, bzw. aus welchen logs kann man eigentlich für ein Programm sicher das device des Brenners ermitteln, wenn ev....
  4. Prozess ermitteln, der DNS-Anfragen stellt

    Prozess ermitteln, der DNS-Anfragen stellt: Hallo, ich habe die /etc/resolv.conf eines Rechners geändert, so dass jetzt andere DNS-Server resolven. Doch der betreffende Rechner stellt...
  5. Anzahl Dateein in xbeliebigen Verzeichnissen ermitteln

    Anzahl Dateein in xbeliebigen Verzeichnissen ermitteln: Hallo ixh habs mal in diese Rubrik gesetzt, da ich nciht weiß, ob das nur per script geht, oder nicht. Wie kann ich die Anzahl der Dateien...