2012-02-16 17 views
6

içinde dosya boyutu toplamını alın ben cihazın hafızasında Flickr kapalı yük Ben önbellek fotoğraflara kullanmak Aşağıdaki kod var:iOS - dizindeki

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]; 
} 

Ben 10MB bu sınırlamak istiyorum, sonra sınır ise Önbelleğin en eski fotoğrafını kaldırmak için ulaştım, kaydedilen tüm dosyaların toplam boyutunu nasıl alabilirim ve hangisinin en eski olduğunu nasıl kontrol edebilirim?

+0

stanford iOS dersine yardımcı oluyordur? – Uko

+0

Evet, yorumu daha uzun yapmak zorundayım, böylece cevap verebilirim. – 8vius

+0

Bir dizinin diskte kapladığı boyutun hesaplanması aslında biraz daha ilgili. Benzer bir soruya [bu yanıt] 'da (http://stackoverflow.com/a/28660040/104790) nasıl yapılacağını öğrenin. –

cevap

9

Sen Yani belki klasördeki tüm dosyaları yineleme ve doğrudan bir şekilde gidecekseniz emin değilim ... dosya boyutlarını toplayabilir böylece

NSError *attributesError = nil; 

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

    int fileSize = [fileAttributes fileSize]; 

gibi bir dosyanın boyutunu alabilirsiniz Ayrıca bu SO bu aswell bahsediyor sonrası gidecekseniz, dizinin boyutu almak, size yapabileceği dosyanın oluşturulma tarihini bulmak için bir çözüm here

bulabilirsiniz

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

Umut,

+0

Harika Daniel, bir şey daha var, bir dizinin var olup olmadığını kontrol etmenin kesin bir yolu nasıl olurdu? Olmuyorsa, belge dizininde bir alt dizin oluşturacağım – 8vius

+0

[NSFileManager defaultManager] itemExistsAtPath – Daniel

+3

numarasını yapmalıdır Aslında dosyaExistsAtPath, Daniel. Şimdi, bir şey daha cevaplayabilir misin? Ben öznitelikleri almak ve üzerinde NSFileSize nesnesi olsun, küçük bir sayı alırsanız, ben bir dosyada çağırırsanız, çok sayıda (her iki bayt olarak kabul ediyorum), dosya boyutunu almak için değil dizin bana içindeki tüm dosyaların toplamını verir mi? – 8vius