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}";
            }
        }
  • 相关阅读:
    SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程)
    Java中将String格式的标准时间字符串转换为Date格式的方法
    ElementUI中el-upload传递额外参数为date类型时后台SpringBoot接收不到
    模式、框架、架构和平台的区别
    架构、框架、模式和平台
    “模式”与“方式”的区别
    JAVA发送HTTP请求方式
    http status状态码,readyState状态码
    区分网络请求时http和ajax请求
    HTTP请求方式中8种请求方法
  • 原文地址:https://www.cnblogs.com/Fred1987/p/11908051.html
Copyright © 2011-2022 走看看