Ответ 1
Что-то вроде следующего должно помочь вам начать:
- (unsigned long long int) cacheFolderSize {
NSFileManager *_manager = [NSFileManager defaultManager];
NSArray *_cachePaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *_cacheDirectory = [_cachePaths objectAtIndex:0];
NSArray *_cacheFileList;
NSEnumerator *_cacheEnumerator;
NSString *_cacheFilePath;
unsigned long long int _cacheFolderSize = 0;
_cacheFileList = [_manager subpathsAtPath:_cacheDirectory];
_cacheEnumerator = [_cacheFileList objectEnumerator];
while (_cacheFilePath = [_cacheEnumerator nextObject]) {
NSDictionary *_cacheFileAttributes = [_manager fileAttributesAtPath:[_cacheDirectory stringByAppendingPathComponent:_cacheFilePath] traverseLink:YES];
_cacheFolderSize += [_cacheFileAttributes fileSize];
}
return _cacheFolderSize;
}
ИЗМЕНИТЬ
Возвращаемое значение будет в байтах: cf. http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSFileSize
Предполагая, что вы запускаете это в Simulator, Finder, вероятно, сообщает об использовании файловых блоков для этих байтов. Эти блоки обязательно будут больше, чем сами данные файла. Читайте в системе HFS +, чтобы узнать о блоках: http://en.wikipedia.org/wiki/HFS_Plus
Я не уверен, какая файловая система используется на iPhone или какой размер блока файлов будет на устройстве, поэтому, когда общая сумма байтов будет одинаковой, фактическое использование диска может отличаться между Simulator и устройством.