zoukankan      html  css  js  c++  java
  • C# calculate disk size

        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}";
            }
        }
  • 相关阅读:
    jsp中上传图片(使用ajaxfileupload)
    快慢的悖论
    为什么所有的架构都是糟糕的
    软件项目是这样失败的。
    初识微信小程序
    Hibernate hql getHibernateTemplate()常用方法汇总
    JAVA中关于set()和get()方法的理解及使用
    java性能调优实战
    PLSQL显示乱码-无法进行中文条件查询解决
    Oracle 10g bigfile表空间简介
  • 原文地址:https://www.cnblogs.com/Fred1987/p/11908051.html
Copyright © 2011-2022 走看看