Объем всех жестких/оптических дисков, за исключением магнитных флоппи-дисков (дискет), всегда рассчитывался исходя не из стандартов расчета (SI-префиксы). Так рассчитывается только память (ОЗУ), и то, не факт. Из-за этого у многих программистов возникает путаница при получении объемов данных (будь это занятое или свободное пространство). В 1999 году IEC рекомендовало использовать SI-префиксы (кило-, мега-, гига- и т.д.) только для степеней 1000, и новые для степеней 1024 (кики-, миги-, гиги- и т.д.). На некоторый момент к сожалению такие системы гигантов Майкрософт и Эппл досих пор используют неправильный расчет, за что следовательно надо бы дать им в морду. Но сейчас Эппл исправилась, но Майкрософту всетаки и дальше следовало бы дать в морду за то, что и дальше обманывают пользователей.
Практика
Получить объем свободного пространства на жестком диске не сложно, о чем свидетельствует код:
NSFileManager *fm = [NSFileManager defaultManager];
double freeSpace = 0.0;
NSDictionary *attr = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/" error:nil];
if (!error)
{
freeSpace = [[attr objectForKey:NSFileSystemFreeSize] doubleValue];
}
//Конвертируем байты в гигабайты (минуя теорию)
freeSpace = freeSpace / (1024 * 1024 * 1024);
Но в результате получим неверные данные, потому как согласно "теории", полученный объем в байтах нужно делить на выражение (1000*1000*1000)
freeSpace = freeSpace / (1000 * 1000 * 1000);
0 коментарі:
Отправить комментарий