我如何比较两个自由空间?

时间:2015-10-08 11:18:47

标签: c#

我有一个文本文件,其中我放置了Space Required,这个值(以kB为单位)我用:

提取
string SpaceRequired = lines.Where(txt => txt.Contains("SpaceRequired"))
                            .Select(txt => txt.Split('=')[1].Replace("\"", ""))
                            .FirstOrDefault();

和我需要比较的freeSpace:

var drive = new DriveInfo("c");
long freeSpaceInC = drive.TotalFreeSpace;

private static string toReadableSize(long size)
{
    if (size < 1024 * 1024)
        return Math.Round(((float)size / 1024), 2) + "KB";

    if (size < 1024 * 1024 * 1024)
        return Math.Round(((float)size / (1024 * 1024)), 2) + "MB";

    return Math.Round(((float)size / (1024 * 1024 * 1024)), 2) + "GB";
}

我试图在这里进行比较:

private void Next_Click(object sender, EventArgs e)
{
    if (textBox1.Text.StartsWith("C:"))
    {
        /*if (freeSpaceInC >= SpaceRequired)
        {
            this.Visible = false;
            Form2 fm = new Form2();
            fm.ShowDialog();
        }
        else
            MessageBox.Show("You don't have free space");*/
    }

但我不知道这样做。我需要比较kB中的值,因为在文本文件中我有以kB为单位。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

你必须解析字符串,然后你将kb作为long。由于TotalFreeSpace以字节为单位返回驱动器上可用空间总量,因此必须将其乘以1000:

long reqKB = long.Parse(SpaceRequired);
long reqBytes = 1000 * reqKB;
if (freeSpaceInC >= reqBytes)
{
    // ..
}