2010-04-04 2 views
1

я сохраненные изображения из сети как этогоКак получить размер каталогов, включая все подкаталоги?

Documents/imagecache/domain1/original/path/inURI/foo.png 
Documents/imagecache/domain2/original/path/inURI/bar.png 
Documents/imagecache/... 
Documents/imagecache/... 

Теперь я хотели бы, чтобы проверить размер imagecache включая все его подкаталоги.

Есть ли удобный способ сделать это - предпочтительнее, не просматривая все данные вручную?

редактировать

Я хочу, чтобы проверить размер внутри iPhone App. джейлбрейкинг - это не вариант.

Решение

, полученный из ответа Николая

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSFileManager *fileMgr = [NSFileManager defaultManager]; 
NSString *p = [documentsDirectory stringByAppendingPathComponent:path]; 
unsigned long long x =0 ; 
for (NSString *s in [fileMgr subpathsAtPath:p]) { 
    NSDictionary *attributes = [fileMgr attributesOfItemAtPath: [p stringByAppendingPathComponent:s] error:NULL]; 
    x+=[attributes fileSize]; 
} 
+0

Ответ на закрытие голосования: этот вопрос не принадлежит superuser.com, так как это действительный вопрос программирования. это должно быть сделано в obj-c – vikingosegundo

ответ

1

информация не хранится в файловой системе. Невозможно получить объединенный размер без прохождения каталогов.

Я не знаю библиотечной функции, которая делает это, но вот быстрый хак, который должен работать:

unsigned long long combinedSize = 0; 
for (NSString* path in [[NSFileManager defaultManager] subpathsAtPath:myDir]) { 
    combinedSize += [[attributesOfItemAtPath:path error:NULL] fileSize]; 
} 

Edit 2015:

Я добавил гораздо более всеобъемлющим (и более правильно) ответьте на a similar question here.

Смежные вопросы