• Calculate drive total/free/available space


    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;

    namespace ConsoleApplication5
    {
        class Program
        {
            static void Main(string[] args)
            {
                long? systemTotalSpace = GetDriveTotalSpace(Path.GetPathRoot(Environment.SystemDirectory));
                long? systemAvailableSpace = GetDriveFreeSpace(Path.GetPathRoot(Environment.SystemDirectory));
                long? remoteAvailableSpace = GetDriveOccupiedSpace(Path.GetPathRoot(Environment.SystemDirectory));

                if(systemTotalSpace.HasValue)
                    Console.WriteLine("C: total space " + ConvertBytesToGString(systemTotalSpace.Value));

                if (systemAvailableSpace.HasValue)
                    Console.WriteLine("C: free space " + ConvertBytesToGString(systemAvailableSpace.Value));

                if (remoteAvailableSpace.HasValue)
                    Console.WriteLine("C: occupied space " + ConvertBytesToGString(remoteAvailableSpace.Value));

                Console.ReadKey();
            }

            static string ConvertBytesToGString(long size)
            {
                string[] Suffix = { "b", "K", "M", "G", "T" };
                const long Unit = 1024;

                int sIndex = 0;
                decimal dSize = new decimal(size);

                while (dSize > Unit)
                {
                    dSize = dSize / Unit;

                    sIndex++;
                }

                return string.Format("{0} {1} ", Math.Round(dSize, 2), Suffix[sIndex]);
            }

            static long? GetDriveOccupiedSpace(string driveName)
            {
                DriveInfo[] allDrives = DriveInfo.GetDrives();

                foreach (DriveInfo d in allDrives)
                {
                    if (d.Name.Equals(driveName, StringComparison.OrdinalIgnoreCase))
                    {
                        return d.TotalSize - d.TotalFreeSpace;
                    }
                }

                return null;
            }
            static long? GetDriveTotalSpace(string driveName)
            {
                DriveInfo[] allDrives = DriveInfo.GetDrives();

                foreach (DriveInfo d in allDrives)
                {
                    if (d.Name.Equals(driveName, StringComparison.OrdinalIgnoreCase))
                    {
                        return d.TotalSize;
                    }
                }

                return null;
            }


            static long? GetDriveFreeSpace(string driveName)
            {
                DriveInfo[] allDrives = DriveInfo.GetDrives();

                foreach (DriveInfo d in allDrives)
                {
                    if (d.Name.Equals(driveName, StringComparison.OrdinalIgnoreCase))
                    {
                        return d.AvailableFreeSpace; //Available free space for current user
                    }
                }

                return null;
            }
        }
    }

  • 相关阅读:
    Struts2框架
    读者写者问题
    哲学家就餐问题
    理解中断
    理解处理机调度
    理解死锁
    理解进程
    Linux CentOS 6.7 挂载U盘
    家庭-养老院模型理解IOC和DI
    Bash基础
  • 原文地址:https://www.cnblogs.com/sskset/p/3580620.html
Copyright © 2020-2023  润新知