Блокирует в КБ / МБ / ГБ из statfs на iPhone - PullRequest
0 голосов
/ 28 декабря 2008

Я использую statfs (), который дает мне свободные блоки, доступные не суперпользователю.

Я не уверен, как преобразовать это в КБ / МБ / ГБ.

Возвращаемые значения:

fundamental file system block size: 4096
total data blocks in file system: 3805452
free blocks in fs: 63425
free blocks avail to non-superuser: 63425
total file nodes in file system: 3805450
free file nodes in fs: 63425

Интересующее меня значение говорит о 63425, но я не уверен, что это значит в КБ / МБ / ГБ.

Я запускаю это на iPhone, и я полагаю, что приложение должно иметь доступ к 2 ГБ, если на устройстве открыто столько всего, что в моем случае есть.

Так что я должен был бы получить значение где-то около 2G, я бы подумал.

Я запустил 63425 против онлайн-конвертера блоков в МБ, но это дает мне 30 МБ, чего не должно быть.

Может кто-нибудь помочь мне выяснить, как получить КБ / МБ / ГБ из этой информации?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 28 декабря 2008

Я успешно использую следующее:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

struct statfs tStats;

statfs([[paths lastObject] cString], &tStats);

unsigned long long Available = ((unsigned long long)tStats.f_bavail) * ((unsigned long long)tStats.f_bsize);

if (Available > 1024)
{
    //Kilobytes
    Available = Available / 1024;

    diskSpaceLbl.text = [[@"Available Disk Space: " stringByAppendingFormat:@"%llu", Available] stringByAppendingString:@" KB"];
}

if (Available > 1024)
{
    //Megabytes
    Available = Available / 1024;

    diskSpaceLbl.text = [[@"Available Disk Space: " stringByAppendingFormat:@"%llu", Available] stringByAppendingString:@" MB"];
}

if (Available > 1024)
{
    //Gigabytes
    Available = Available / 1024;

    diskSpaceLbl.text = [[@"Available Disk Space: " stringByAppendingFormat:@"%llu", Available] stringByAppendingString:@" GB"];
}
2 голосов
/ 28 декабря 2008

Размер блока составляет 4096 байт или 4 КБ. Таким образом, 63425 блоков - это 63425 * 4 КБ = 253 700 КБ, что примерно равно 248 МБ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...