System.IO.DriveInfo возвращает неверные значения дискового пространства

ОБНОВЛЕНИЕ. Эта проблема не возникает на протестированных мною устройствах Android. Он возвращает хорошие значения. Был бы очень признателен за любые указания по этому вопросу.

У меня возникли проблемы с получением правильных значений AvailableFreeSpace с моего настольного компьютера Mac. Я работаю с Unity3D C# и использую следующий код:

DriveInfo[] drives = DriveInfo.GetDrives();

foreach(DriveInfo drive in drives)
{
    if (drive.IsReady)
    {
        Debug.Log(drive.Name);
        Debug.Log(drive.AvailableFreeSpace);
        Debug.Log(drive.TotalFreeSpace);
        Debug.Log(drive.TotalSize);
    }
}

Мои результаты немного странные. Я получаю только один диск: я получаю имя «/», а значения неверны. AvailableFreeSpace возвращает большее значение, чем TotalSize, что не имеет смысла. Кроме того, тип диска неизвестен, а формат диска — unixfs, если это поможет.

Не знаю, может быть, я упустил что-то очевидное в файловой структуре на компьютере Mac?

РЕДАКТИРОВАТЬ: У меня есть жесткий диск SATA с 500 ГБ, разделенный на два раздела. Разве это не должно дать мне 2 диска?

EDIT2: Моя версия Monodevelop — 4.0.1, поэтому я не думаю, что это связано с ошибкой, о которой сообщалось несколько лет назад в версии 2.10.0 или что-то в этом роде.

Что я делаю не так?


person Bypp    schedule 16.06.2014    source источник
comment
Дубликат stackoverflow.com/questions/24144003/   -  person Endrju    schedule 17.06.2014
comment
Не дубликат, другой вопрос ищет альтернативное решение моей проблемы, поскольку метод, использованный выше, мне не подходит. Этот вопрос представляет собой обновление, показывающее точную проблему, с которой я столкнулся с этим методом после дополнительного тестирования. Я считаю, что это более конкретный и не совсем тот же вопрос, поэтому я задал еще один вопрос.   -  person Bypp    schedule 17.06.2014


Ответы (1)


Опубликовано на другом форуме, и, по-видимому, это ошибка Mono/Unity. В новейшей версии Unity используется старый Mono (компилятор, а не MonoDevelop (текстовый редактор)):

http://unity3d.com/unity/faq#section-445

Ошибка, возвращающая неверные значения, была исправлена ​​в более поздней версии Mono (2.10), а другая ошибка, связанная с DriveInfo, также была исправлена ​​в Mono версии 3.0:

http://www.mono-project.com/Release_Notes_Mono_2.10

http://www.mono-project.com/Release_Notes_Mono_3.0

Так что практически ничего не остается делать, кроме как найти другой способ получить доступное дисковое пространство на Mac.

person Bypp    schedule 19.06.2014
comment
Отмечу это как правильное, но в случае, если я могу ошибаться, не стесняйтесь опубликовать свой собственный ответ или добавить к этому. - person Bypp; 19.06.2014