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.
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!