2011-08-30 22 views
0

所以我們都知道,下面的代碼將返回長:格式化DriveInfo的總計TOTALSIZE在C#中的結果

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

輸出將是這樣的:

驅動器大小爲:114203439104

所以我認爲這意味着驅動器的總大小約爲114千兆字節。

不過,我想進入使用以下格式:

114.2 MB

是否有這樣做的一個非常快速簡便的方法?

在此先感謝。

+2

見http://stackoverflow.com/questions/128618/c-file-size-format-provider –

回答

1

我認爲這是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; 
} 

編輯:正如指出的那樣,我有完全忘了處理規模(代碼修訂)

+0

不應該除以1024? –

+0

@Valerio,當然你是對的,不能相信我忘了那部分:( – musefan

0

是。重複除以1024.

var kb = size/1024; 
var mb = kb/1024; 
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"); 
    } 
0

我只想補充一點,如果你談論的是驅動器的大小,而不是對別的東西的大小,要知道,HDD/SDD硬件廠商使用1000 KB,而不是1024。這就是爲什麼硬盤標記爲400GB將顯示在大多數程序中爲372.53GB。一定要向用戶提供他期望的信息。