Я хочу получить список файлов в каталоге, но мне нужно знать, является ли файл каталогом, когда он был последний раз изменен, и найти его имя :). Итак, я попробовал это:
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:
, но я думаю, что это не лучший способ сделать это, не так ли?
Я планирую использовать это в папках, которые могут содержать большое количество файлов, поэтому я хотел бы сделать это наиболее эффективным способом.
Редактировать для iOS5 и новее
Как указал @jeremyP, Согласно документам метод не реализован в iOS4, но, начиная с iOS5 и более поздних версий, он, похоже, работает правильно:
Наличие
Доступный в iOS 5.0 и позже. (Символ присутствует в iOS 4, но не выполняет никаких операций.)
Этот вопрос был сделан, когда iOS4 был последним, я думаю. Теперь в iOS 5
и 6 все работает как положено:)