当前位置: 移动技术网 > IT编程>开发语言>c# > C# calculate disk size

C# calculate disk size

2019年11月22日  | 移动技术网IT编程  | 我要评论
    static void main(string[] args)
        {
            string dir = @"c:\";
            string[] dirs=directory.getdirectories(dir);
            long totalsize = 0;
            if(dirs!=null && dirs.any())
            {
                foreach(string dr in dirs)
                {
                    var size = new directoryinfo(dr).getdirectorysize();
                    totalsize += size;
                    console.writeline($"dir:{dr},size:{size}");
                }
            }
            console.writeline($"totalsize:{totalsize}");
            system.diagnostics.debug.writeline($"totalsize:{totalsize}");
        }  

static class dirhelper
    {
        public static long getdirectorysize(this system.io.directoryinfo directoryinfo, bool recursive = true)
        {
            var startdirectorysize = default(long);
            try
            {
                
                if (directoryinfo == null || !directoryinfo.exists)
                    return startdirectorysize; //return 0 while directory does not exist.

                //add size of files in the current directory to main size.
                foreach (var fileinfo in directoryinfo.getfiles())
                    system.threading.interlocked.add(ref startdirectorysize, fileinfo.length);

                if (recursive) //loop on sub direcotries in the current directory and calculate it's files size.
                    system.threading.tasks.parallel.foreach(directoryinfo.getdirectories(), (subdirectory) =>
                system.threading.interlocked.add(ref startdirectorysize, getdirectorysize(subdirectory, recursive)));

                  //return full size of this directory.
            }
            catch
            {

            }
            return startdirectorysize;
        }
    }

 

static void diskdemo()
        {
            string dir = @"c:\windows\";
            string[] dirs = directory.getdirectories(dir);
            long totalsize = 0;
            stringbuilder builder = new stringbuilder();
            list<dir> dirlist = new list<dir>();
            if (dirs != null && dirs.any())
            {
                foreach (string dr in dirs)
                {
                    var size = new directoryinfo(dr).getdirectorysize();
                    dir d = new dir();
                    d.dirname = dr;
                    d.dirsize = size;
                    dirlist.add(d);
                    totalsize += size;
                }
            }

            foreach (var dd in dirlist.orderbydescending(x => x.dirsize))
            {
                system.diagnostics.debug.writeline(dd);
                console.writeline(dd);
            }
            system.diagnostics.debug.writeline($"totalsize:{totalsize}");
        }



 class dir
    {
        public string dirname { get; set; }
        public long dirsize { get; set; }

        public override string tostring()
        {
            return $"dirname:{dirname},dirsize:{dirsize}";
        }
    }

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网