【发布时间】:2009-02-03 17:47:30
【问题描述】:
我有一个包含 4 列的列表视图 - 名称、扩展名、大小和位置。我有一种方法,它以字节为单位获取文件大小并根据需要转换为 KB、MB、GB 等。一个示例输出是一个 1024 字节的文件,打印为“1KB”。然后将该值放置在列表视图中。
我需要做的是智能地对大小列进行排序。现在排序只是一个简单的比较,所以 1025 KB 高于 1024 MB。我怎样才能让它“感知大小”?
我当前的排序代码来自这篇知识库文章:http://support.microsoft.com/kb/319401 这是我生成文件大小文本的代码:
public static string getDynamicFileSize(string fileName)
{
FileInfo fi = new FileInfo(fileName);
long sizeInBytes = fi.Length;
if (sizeInBytes >= 1073741824)
{
double sizeInGB = sizeInBytes / Math.Pow(1024, 3);
return Math.Round(sizeInGB, 2) + " GB";
}
if (sizeInBytes >= 1048576)
{
double sizeInMB = sizeInBytes / Math.Pow(1024, 2);
return Math.Round(sizeInMB, 2) + " MB";
}
if (sizeInBytes >= 1024)
{
double sizeInKB = sizeInBytes / Math.Pow(1024,1);
return Math.Round(sizeInKB, 2) + " KB";
}
//No conversion needed
return sizeInBytes + " bytes";
}
谢谢。
【问题讨论】: