在C#中格式化DriveInfo的TotalSize的结果

时间:2011-08-30 16:25:06

标签: c# formatting driveinfo

所以我们都知道以下代码将返回long:

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

输出将是这样的:

云端硬盘大小为:114203439104

所以我认为这意味着该驱动器的总大小约为114千兆字节。

但是,我希望将其转换为以下格式:

114.2 MB

有没有一种非常快速简便的方法呢?

提前致谢。

4 个答案:

答案 0 :(得分: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;
}
编辑:正如所指出的,我完全忘了处理大小(修改代码)

答案 1 :(得分:1)

这是我正在使用的片段:

    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");
    }

答案 2 :(得分:0)

是。重复除以1024。

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

答案 3 :(得分:0)

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