tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
1024
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Sep 2011
    Beiträge
    7
    Hallo liebes Forum

    Wie man schon am Titel erkennt würde dich gerne die Größe von Ordnern ermitteln ohne dies rekursiv tun zu müssen, da mir das zu langsam ist.

    Gibt es überhaupt die möglichkeit dazu****


    Mfg Mathias
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Hi und Willkommen bei tutorials.de

    Nein, da gibts keine Möglichkeit dazu.
    Kann man auch am Windows-Explorer erkennen:
    Wenn man die Eigenschaftsseite eines Ordners mit sehr vielen Dateien öffnet,
    geht die Größe laufend rauf, weil erst jede Datei durchgegangen wird
    und das Ganze noch nicht fertig ist.

    Vllt. gibts aber bei deiner Größenermittlung eine Möglichkeit, das zu verschnellern?
    Zeig doch mal, wie du es zurzeit machst.

    Wenn die Schnelligkeit wirklich wichtig ist: Mit C/C++
    erzielt man meistens bessere Geschwindigkeiten.

    Gruß
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Registriert seit
    Sep 2011
    Beiträge
    7
    Hi Sheel,

    Ich programmiere in c#

    hier mein Code zur Größenbestimmung
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
       public double GetDirectorySize(string path, bool includeSubDirectories)
            {
              double size = 0;
     
                if (includeSubDirectories)
                {
                    try
                    {
                        string[] subDirectories = Directory.GetDirectories(path);
                        foreach (string subDirectory in subDirectories)
                            size += GetDirectorySize(subDirectory, includeSubDirectories);
                       
                    }
                    catch {}
                }
     
                // get files and add size
                try
                {
                    string[] fileNames = Directory.GetFiles(path);
                    foreach (string fileName in fileNames)
                    {
                        FileInfo fileInfo = new FileInfo(fileName);
                        size += fileInfo.Length;
                       
                    }
                }
                catch {}
               
                return size;
            }
    Geändert von sheel (03.11.11 um 10:14 Uhr) Grund: Codetags
     

  4. #4
    Registriert seit
    Sep 2011
    Beiträge
    7
    Du hast eben erwähnt, dass Windows das ja auch macht, wenn man auf Eigenschaften eines Ordners zugreift. Allerdings ist Windows viel schneller wie mein Code. Gibt es vielleicht die Möglichkeit die Funktion aufzurufen die Windows benutzt um die Ordnergröße zu ermitteln?

    Gruß
     

  5. #5
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Das ist vermutlich in C++ geschrieben.
    Kenn den Originalcode nicht, aber FindFirstFile/FindNextFile wären Anhaltspunkte.

    Wenn man unbedingt will, kann man die auch noch zerlegen
    und nur den Filesize-relevanten Code rauspicken...usw

    Eine Funktion, die mit einem Aufruf ganz genau das macht, was du willst, kenn ich nicht.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  6. #6
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Und/oder die Prüfung ev. in Threads auslagern.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  7. #7
    Registriert seit
    Sep 2011
    Beiträge
    7
    Danke für die Antworten hab mein Problem gelöst ist jetzt deutlich schneller.

    Code csharp:
    1
    2
    3
    4
    5
    6
    
    FileInfo[] FI = new DirectoryInfo(path).GetFiles("*.*", SearchOption.AllDirectories);
                foreach (FileInfo F1 in FI)
                {
                    size += F1.Length;
                }
                return size;
     

  8. #8
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    Bin gerad nicht sicher aber das ganze macht doch schon:
    http://msdn.microsoft.com/de-de/libr...directory.aspx
    Wenns nur um die Größe geht. Oder habe ich die Frage nicht verstanden?
    MfG
    Oli


    mist war zu spät
    Geändert von paebels (08.11.11 um 11:23 Uhr)
     

Ähnliche Themen

  1. Ordnergröße ermitteln Alternative
    Von flokli im Forum PHP
    Antworten: 8
    Letzter Beitrag: 11.07.06, 14:13
  2. Antworten: 1
    Letzter Beitrag: 14.10.05, 21:57
  3. Ordnergröße ermitteln
    Von Moritz123 im Forum PHP
    Antworten: 25
    Letzter Beitrag: 29.12.03, 20:42
  4. Antworten: 4
    Letzter Beitrag: 15.12.03, 10:30
  5. Antworten: 1
    Letzter Beitrag: 27.09.02, 17:12

Stichworte