2009-06-29 45 views
2

我有以下代码:测量fileinfo.Length物体进入KBS

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()和我想测量KBS方面的输出。如何做到这一点的任何想法?例如,而不是获得2048作为文件大小,我想只得到2Kb。

预先感谢帮助

回答

17

这里是如何得到它以GB为单位分解,兆字节或千字节:

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年而言,你可以用1000/1000分别代替1 << 10>> 10,同样使用1000000 1000000000.

+5

我知道这个人在你的回答之后很久,但为什么不简单地尝试`FileInfo.Length/1024;`来获取KB,然后继续分割以获得下一个度量? – Ortund 2012-09-19 10:20:35

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

尝试line below:

string sizeInKb = string.Format("{0} kb", fileInfo.Length/1024);