Свободное место на диске, рассчитанное с помощью C#, не соответствует значению, отображаемому в окне "Мой компьютер"

Я использовал следующий метод для расчета свободного места на диске с помощью класса DriveInfo. Но оно не соответствует значению свободного места на диске, отображаемому в «Моем компьютере». Следующий метод возвращает 106 ГБ свободного места, в то время как MyComputer показывает только 98,8 ГБ свободного места. Как рассчитать точную стоимость? Почему есть разница?

public long GetTotalFreeSpace(string driveName)
    {
        foreach (DriveInfo drive in DriveInfo.GetDrives())
        {
            if (drive.IsReady && drive.Name == driveName)
            {
                return drive.TotalFreeSpace;
            }
        }
        return -1;
    }

person AnOldSoul    schedule 10.07.2016    source источник
comment
Вероятно, вы также захотите показать код, который вы используете для вычисления длины до гигабайта. Кроме того, вы не задумывались, что произойдет, если у вас будет более одного диска?   -  person Claus Jørgensen    schedule 10.07.2016


Ответы (1)


Есть два соглашения: одно гласит, что 1 кБ = 1000 байт, а другое — что 1 кБ = 1024 байта. Второй также известен как kibibyte.

Это объясняет всю разницу:
106 * 1000 * 1000 * 1000 ~= 98,8 * 1024 * 1024 * 1024.

Так что я думаю, отсюда и разница.

person Desirius    schedule 10.07.2016