【问题标题】:Formatting the result of DriveInfo's TotalSize in C#在 C# 中格式化 DriveInfo 的 TotalSize 的结果
【发布时间】:2011-11-06 23:18:37
【问题描述】:

所以我们都知道下面的代码会返回一个long:

DriveInfo myDrive = new DriveInfo("C:\\");
long size = myDrive.TotalSize;
Console.WriteLine("Drive Size is: {0}", size);

输出将是这样的:

驱动器大小为:114203439104

所以我认为这意味着驱动器的总大小约为 114 GB。

但是,我想把它变成以下格式:

114.2 MB

有没有真正快速简便的方法?

提前致谢。

【问题讨论】:

标签: c# formatting driveinfo


【解决方案1】:

是的。反复除以 1024。

var kb = size/1024;
var mb = kb/1024;

【讨论】:

    【解决方案2】:

    我认为这是 114 GB,但嘿。无论如何,我会为此编写一个辅助函数。比如……

    public string GetSize(long size)
    {
       string postfix = "Bytes";
       long result = size;
       if(size >= 1073741824)//more than 1 GB
       {
          result = size / 1073741824;
          postfix = "GB";
       }
       else if(size >= 1048576)//more that 1 MB
       {
          result = size / 1048576;
          postfix = "MB";
       }
       else if(size >= 1024)//more that 1 KB
       {
          result = size / 1024;
          postfix = "KB";
       }
    
       return result.ToString("F1") + " " + postfix;
    }
    

    编辑:正如所指出的,我完全忘记处理大小(代码已修改)

    【讨论】:

    • @Valerio,你当然是对的,不敢相信我忘记了那部分:(
    【解决方案3】:

    这是我正在使用的 sn-p:

        public static string FormatBytesToHumanReadable(long bytes)
        {
            if (bytes > 1073741824)
                return Math.Ceiling(bytes / 1073741824M).ToString("#,### GB");
            else if (bytes > 1048576)
                return Math.Ceiling(bytes / 1048576M).ToString("#,### MB");
            else if (bytes >= 1) 
                return Math.Ceiling(bytes / 1024M).ToString("#,### KB");
            else if (bytes < 0)
                return "";
            else
                return bytes.ToString("#,### B");
        }
    

    【讨论】:

      【解决方案4】:

      我只想补充一点,如果您谈论的是驱动器大小而不是其他大小,请注意 HDD/SDD 硬件供应商使用 1000 KB,而不是 1024。这就是为什么将 HDD 标记为 400Gb 的原因在大多数程序中显示为 372.53GB。确保向用户提供他期望的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多