2009-06-29 2 views
2

У меня есть следующий код:Измерительные объекты fileinfo.Length в КБС

foreach (string p in dirs) 
     { 
      string path = p; 
      string lastAccessTime = File.GetLastAccessTime(path).ToString(); 
      bool DirFile = File.Exists(path); 
      FileInfo fInf = new FileInfo(path); 

      DateTime lastWriteTime = File.GetLastWriteTime(p); 
      dirFiles.Add(p + "|" + lastAccessTime.ToString() + "|" + DirFile.ToString() + "|" + lastWriteTime.ToString() + "|" + fInf.Length.ToString()); 


     } 

У меня есть fInf.Length.ToString() и я хотел бы измерить выход через КБС. Любые идеи о том, как это сделать? Например, вместо того, чтобы получать 2048 в качестве размера файла, я бы хотел получить только 2Kb.

Заранее спасибо за помощь

ответ

17

Вот как получить его расщепляется в гигабайтах, мегабайтах или килобайтах:

string sLen = fInf.Length.ToString(); 
if (fInf.Length >= (1 << 30)) 
    sLen = string.Format("{0}Gb", fInf.Length >> 30); 
else 
if (fInf.Length >= (1 << 20)) 
    sLen = string.Format("{0}Mb", fInf.Length >> 20); 
else 
if (fInf.Length >= (1 << 10)) 
    sLen = string.Format("{0}Kb", fInf.Length >> 10); 

sLen будет свой ответ. Вы можете обернуть его в функцию и просто передать в Length или даже объект FileInfo.

Если вместо «реальных» килобайт, вы хотите его с точки зрения 1000-х байтов, вы можете заменить 1 << 10 и >> 10 с 1000 и /1000 соответственно, а так же для других устройств, использующих 1000000. и 1000000000.

+5

Я знаю, что это долго после вашего ответа, но почему бы просто не попробовать «FileInfo.Length/1024;» получить KBs, а затем продолжить делиться, чтобы получить следующую меру? – Ortund

+0

@lavinio Не могли бы вы объяснить свой ответ .. –

7

Если вы хотите длину как (длинный) целое:

long lengthInK = fInf.Length/1024; 
string forDisplay = lengthInK.ToString("N0") + " KB"; // eg, "48,393 KB" 

Если вы хотите длину как с плавающей точкой:

float lengthInK = fInf.Length/1024f; 
string forDisplay = lengthInK.ToString("N2") + " KB"; // eg, "48,393.68 KB" 
3

Try ниже:

string sizeInKb = string.Format("{0} kb", fileInfo.Length/1024); 
Смежные вопросы