Feedback

C# - Ordnergröße ermitteln

Veröffentlicht von am 25.12.2007
(5 Bewertungen)
Mit diesem Snippet ist es möglich, die Größe eines Ordners mit unterordnern zu ermitteln.
GFU-Schulungen  [Anzeige]

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

using System;
using System.IO;

namespace ViperBytes.IO
{
    /// <summary>
    /// Directory size class with recursive sub directory inclusion
    /// 
    /// (c) Copyright Vincent Wochnik 2007
    /// </summary>
    class DirectorySize
    {
        /// <summary>
        /// Returns the size of a directory
        /// </summary>
        /// <param name="path">Path to directory</param>
        /// <param name="includeSubDirectories">Specifyes, wheather sub directories are included</param>
        /// <returns>Directory size</returns>
        public static long GetDirectorySize(string path, bool includeSubDirectories)
        {
            long size = 0;

            // get sub directories (recursive)
            if (includeSubDirectories)
            {
                try
                {
                    string[] subDirectories = Directory.GetDirectories(path);
                    foreach (string subDirectory in subDirectories)
                        size += GetDirectorySize(subDirectory, includeSubDirectories);
                }
                catch { /* what should we do??? */ }
            }

            // 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 { /* what should we do??? */ }

            return size;
        }
    }
}

4 Kommentare zum Snippet

Joshua schrieb am 10.10.2011:
Wäre es nicht besser ein ulong anstatt long zu verwenden?
Ansonsten danke ;)
NicoMcF schrieb am 19.10.2011:
Wenn ich richtig gerechnet habe, macht ulong erst ab einer Ordnergröße von 1.048.576 TBs sinn, von daher... ;)
Curry schrieb am 19.10.2011:
Aber eine unsigned-Variable würde wirklich mehr Sinn machen.
Oder hast du schonmal einen Ordner gesehen, der KLEINER als 0 Byte ist?
Sperneder Patrick schrieb am 20.10.2011:
catch {} ist immer sehr böse.... daher nur 2.
 

Logge dich ein, um hier zu kommentieren!