4

次のコードがあります。

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 だけを取得したいと考えています。

助けてくれてありがとう

4

4 に答える 4

19

ギガバイト、メガバイト、またはキロバイトに分割する方法は次のとおりです。

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オブジェクトでさえ渡すことができます。

1 << 10「実際の」キロバイトの代わりに、1000 バイト単位で表示したい場合は、 and>> 10をそれぞれ1000andに置き換えることができます/1000。同様に、1000000 と 1000000000 を使用する他のものについても同様です。

于 2009-06-29T13:31:06.770 に答える
9

長さを (長い) 整数として指定する場合:

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"
于 2009-06-29T13:26:15.673 に答える
3

以下の行を試してください:

string sizeInKb = string.Format("{0} kb", fileInfo.Length / 1024);
于 2009-06-29T13:27:43.517 に答える