WedX - журнал о программировании и компьютерных науках

NSFileSystemFreeSize возвращает неточное свободное место на диске?

Итак, я пытаюсь найти объем свободного места на моем iPhone, и я уже просмотрел несколько старых сообщений. В большинстве этих сообщений используется NSFileManager для получения значения NSFileSystemFreeSize.

Однако кажется, что число из NSFileSystemFreeSize неточное по сравнению с числом, которое я вижу в настройках моего телефона> общие> о> доступно.

Я получаю следующие значения:

  • NSFileSystemFreeSize: 2287063040 (~ 2,28 ГБ)
  • Доступные настройки телефона: 5,77 ГБ
  • iTunes: 5,67 ГБ бесплатно

Код, который я использовал:

+ (NSString*)getFreeDiskspace
{
NSDictionary *atDict = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/" error:NULL];
unsigned freeSpace = [[atDict objectForKey:NSFileSystemFreeSize] unsignedIntValue];

return [NSString stringWithFormat:@"%u", freeSpace];
}

Другая информация:

  • Используемый телефон: iPhone 7
  • Версия ОС 11.2.1
  • Телефон подключен к macbook, так что я могу напрямую построить через xCode

Кто-нибудь может мне объяснить, почему NSFileSystemFreeSize не совпадает с телефоном и iTunes? Любая помощь приветствуется, спасибо!

26.01.2018

Ответы:


1

Есть много способов получить свободное место

1、

NSString *tempDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary<NSFileAttributeKey, id> *att = [fileManager attributesOfFileSystemForPath:tempDir error:nil];
NSNumber *freeSize = att[NSFileSystemFreeSize];
const long long freeSpace = [freeSize longLongValue];

2、 только iOS 11 или новее

NSURL *url = [[NSURL alloc] initFileURLWithPath:NSHomeDirectory()];
id AA = [url resourceValuesForKeys:@[NSURLVolumeAvailableCapacityForImportantUsageKey] error:nil][NSURLVolumeAvailableCapacityForImportantUsageKey];
NSLog(@"\nURLVolumeAvailableCapacityForImportantUsage : -----------\n%@", AA);

3、f_bavail или f_bfree для использования

- (const long long) diskSpace {
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
struct statfs tStats;
statfs([[paths lastObject] cStringUsingEncoding:NSUTF8StringEncoding], &tStats);

// for total space
//    const long long total_space = (long long)(tStats.f_blocks * tStats.f_bsize);
//    return total_space;

// for freespace:
const long long free_space = (long long)(tStats. f_bavail * tStats.f_bsize);
return free_space;

}

27.06.2018

2

попробовать unsignedLongLongValue вместо unsignedIntValue?

27.01.2018

3

Пользовательский интерфейс настроек iOS не сообщает о «реальном» доступном свободном месте. Поскольку все, что вы храните в Library/Caches/ и tmp/, может быть запрошено ОС, это считается свободным пространством. Также в пользовательском интерфейсе размеры отображаются в базе 10, а не в базе 2.

07.04.2020
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]