субота, 11 травня 2013 р.

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

Теория

Объем всех жестких/оптических дисков, за исключением магнитных флоппи-дисков (дискет), всегда рассчитывался исходя не из стандартов расчета (SI-префиксы). Так рассчитывается только память (ОЗУ), и то, не факт. Из-за этого у многих программистов возникает путаница при получении объемов данных (будь это занятое или свободное пространство). В 1999 году IEC рекомендовало использовать SI-префиксы (кило-, мега-, гига- и т.д.) только для степеней 1000, и новые для степеней 1024 (кики-, миги-, гиги- и т.д.). На некоторый момент к сожалению такие системы гигантов Майкрософт и Эппл до сих пор используют неправильный расчет, за что следовательно надо бы дать им в морду. Но сейчас Эппл исправилась, но Майкрософту все таки и дальше следовало бы дать в морду за то, что и дальше обманывают пользователей.


Практика
Получить объем свободного пространства на жестком диске не сложно, о чем свидетельствует код:
  
    double freeSpace = 0.0;
    NSError *error = nil;
    NSDictionary *attr = [[NSFileManager defaultManager]
                          attributesOfFileSystemForPath:@"/" error:&error];
    if (!error) {
        freeSpace = [[attr objectForKey:NSFileSystemFreeSize] doubleValue];
    }
    //Конвертируем байты в гигабайты (минуя теорию)
    freeSpace = freeSpace / (1024 * 1024 * 1024);

Но в результате получим неверные данные, потому как согласно "теории", полученный объем в байтах нужно делить на выражение (1000*1000*1000)
    freeSpace = freeSpace / (1000 * 1000 * 1000);  

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments