Я хочу получить список файлов в каталоге, но мне нужно знать, является ли файл каталогом, когда он был в последний раз изменен, а также указать его имя: ). Итак, я попробовал следующее:
NSFileManager *fm = [NSFileManager defaultManager];
NSURL *directoryURL = [NSURL fileURLWithPath:@"/Users/nacho4d/Desktop/"];
NSArray *urls = [fm contentsOfDirectoryAtURL:directoryURL
includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLNameKey, NSURLIsDirectoryKey, NSURLContentModificationDateKey, nil]
options:NSDirectoryEnumerationSkipsHiddenFiles
error:nil];
NSError *error = nil;
NSString *name;
NSDate *modificationDate;
NSNumber *isDirectory;
for (NSURL *url in urls) {
if (![url getResourceValue:&name forKey:NSURLNameKey error:&error]) {
NSLog(@"name: %@", [error localizedDescription]);error = nil;
}
if (![url getResourceValue:&modificationDate forKey:NSURLContentModificationDateKey error:&error]) {
NSLog(@"modificationDate: %@", [error localizedDescription]); error = nil;
}
if (![url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error]) {
NSLog(@"isDirectory: %@", [error localizedDescription]); error = nil;
}
NSLog(@"%@ %@ %@", name, modificationDate, isDirectory);
}
Однако я всегда получаю (null) (null) (null)
, без ошибок, но без данных; (
Интересно, что здесь не так?
PS: Мне известно о contentsOfDirectoryAtPath: error:
и attributesOfItemAtPath: error:
, но я думаю, что это не лучший способ сделать это, не так ли?
Я планирую использовать это в папках, которые могут содержать большое количество файлов, поэтому я хотел бы сделать это наиболее эффективным способом.
Как указал @jeremyP, Согласно docs метод не реализован в iOS4, но, начиная с iOS5 и более поздних версий, кажется, что он работает правильно:
Доступность
Доступно в iOS 5.0 и более поздних версиях. (Символ присутствует в iOS 4, но не выполняет никаких действий.)
Этот вопрос был задан, когда, как мне кажется, iOS4 была последней. Теперь в iOS 5 и 6 Все работает, как ожидалось :)