в Objective C, как мне получить список ВСЕХ файлов на iPhone?
это вообще возможно или я могу получить файлы только из определенного каталога или известного пути?
в Objective C, как мне получить список ВСЕХ файлов на iPhone?
это вообще возможно или я могу получить файлы только из определенного каталога или известного пути?
Не без джейлбрейка вашего телефона. Все приложения живут в песочнице и могут видеть только определенные файлы.
Нет, вы можете просто получить файлы в своей песочнице. А для отображения текущего каталога используйте следующий код:
- (NSString *) returnFilePath {
NSArray *pathArray =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [pathArray objectAtIndex:0];
}
Я не уверен, почему люди говорят, что ваше приложение может видеть только определенные файлы внутри вашей песочницы. Начиная с iOS 2.x (последний раз, когда я пробовал что-то подобное), вы можете использовать NSFileManager для отображения файлов практически в любом каталоге. Вот небольшой код для получения всех имен всех файлов в определенном каталоге.
- (NSArray *)allFiles:(NSString *)aPath
NSMutableArray * listing = [NSMutableArray array];
NSArray * fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:aPath error:nil];
if (!fileNames) return listing;
for (NSString * file in fileNames) {
NSString * absPath = [aPath stringByAppendingPathComponent:file];
BOOL isDir = NO;
if ([[NSFileManager defaultManager] fileExistsAtPath:absPath isDirectory:&isDir]) {
if (isDir) {
[listing addObject:absPath];
[listing addObjectsFromArray:[self allFiles:absPath]];
} else {
[listing addObject:absPath];
}
}
}
return listing;
}
Это пример очень простой рекурсивной функции. Конечно, его можно изменить для более эффективной работы с блоками в качестве обратных вызовов или даже включить NSOperation
.
startPath
(переданный аргумент) на aPath
- person Alex Nichol; 21.07.2013