iOS - Получить сумму файлов в каталоге - PullRequest
6 голосов
/ 16 февраля 2012

У меня есть следующий код, который я использую для кэширования фотографий, которые я загружаю из Flickr в память устройства:

NSURL *urlForPhoto = [FlickrFetcher urlForPhoto:self.photo format:FlickrPhotoFormatLarge];
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *imagePath = [rootPath stringByAppendingString:[self.photo objectForKey:FLICKR_PHOTO_ID]];
NSData *dataForPhoto;
NSError *error = nil;
if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) {
    dataForPhoto = [NSData dataWithContentsOfFile:imagePath];
} else {
    dataForPhoto = [NSData dataWithContentsOfURL:urlForPhoto];
    [dataForPhoto writeToFile:imagePath atomically:YES];
}

Я хочу ограничить это до 10 МБ, а затем, если предел достигнут, удалить самую старую фотографиюв кеше, как я могу получить общий размер всех сохраненных файлов и проверить, какой из них самый старый?

1 Ответ

9 голосов
/ 16 февраля 2012

Вы можете получить размер файла примерно так:

NSError *attributesError = nil;

    NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:URL error:&attributesError];

    int fileSize = [fileAttributes fileSize];

Таким образом, вы можете перебирать все файлы в папке и добавлять размеры файлов ... не уверен, что есть прямой путьчтобы получить размер каталога, также есть этот пост, в котором говорится об этом, вы можете найти решение здесь

Чтобы найти дату создания файла, вы можете сделать

NSString *path = @"";
    NSDictionary* fileAttribs = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];
    NSDate *result = [fileAttribs valueForKey:NSFileCreationDate]; //or NSFileModificationDate

Надеюсь, это поможет

...