30 мая 2013 г.

Узнаем свободное место на HDD

Теория

Объем всех жестких/оптических дисков, за исключением магнитных флоппи-дисков (дискет), всегда рассчитывался исходя не из стандартов расчета (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 коментарі:

Отправить комментарий