将fileinfo.Length对象测量为kbs

yea*_*mok 3 c# system.io.fileinfo

我有以下代码:

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());


        }
Run Code Online (Sandbox Code Playgroud)

我有一个fInf.Length.ToString(),我想用kbs来衡量输出.有关如何实现这一目标的任何想法?例如,我不想将2048作为文件大小,而是想得到2Kb.

在此先感谢您的帮助

lav*_*nio 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);
Run Code Online (Sandbox Code Playgroud)

sLen会有你的答案.你可以将它包装在一个函数中,然后传入Length,甚至是FileInfo对象.

如果不是'真正的'千字节,你想要的是1000字节,你可以分别替换1 << 10>> 10使用1000/1000使用1000000和1000000000 替换其他字符.

  • 我知道这是你的答案后很久,但为什么不简单地尝试`FileInfo.Length/1024;`来获取KB,然后继续划分以获得下一个测量? (6认同)

Luk*_*keH 7

如果你想长度为(长)整数:

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

如果您希望长度为浮点数:

float lengthInK = fInf.Length / 1024f;
string forDisplay = lengthInK.ToString("N2") + " KB";    // eg, "48,393.68 KB"
Run Code Online (Sandbox Code Playgroud)