Я пытаюсь прочитать каталоги, а затем получить путь к файлам в этих каталогах. Проблема заключается в том, я не знаю, сколько подкаталогов может быть в папке, и этот кодiOS Читайте несколько подкаталогов
NSString *path;
if ([[NSFileManager defaultManager] fileExistsAtPath:[[self downloadsDir] stringByAppendingPathComponent:[tableView cellForRowAtIndexPath:indexPath].textLabel.text]]) {
path = [[self downloadsDir] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", [tableView cellForRowAtIndexPath:indexPath].textLabel.text]];
}
else{
for (NSString *subdirs in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[self downloadsDir] error:nil]) {
BOOL dir;
[[NSFileManager defaultManager] fileExistsAtPath:[[self downloadsDir] stringByAppendingPathComponent:subdirs] isDirectory:&dir];
if (dir) {
for (NSString *f in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[[self downloadsDir] stringByAppendingPathComponent:subdirs] error:nil]) {
if ([f isEqualToString:[tableView cellForRowAtIndexPath:indexPath].textLabel.text]) {
path = [[self downloadsDir] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@/%@", subdirs, f]];
}
}
}
}
}
читает только до одного подкаталога, и дает мне путь к файлу им ищут. Я не могу найти способ лучше, чем это, чтобы получить несколько подкаталогов и пути файлов в этих каталогах. Может кто-нибудь помочь с этим? Вот что им пытаются сделать
+Downloads Folder+
+File1+ //I can get the path for this
+Directory1+
+Directory2+
+File3+ // I want to get the path for this, but don't know how
+File2+ // I can get the path for this
Я чувствую, что если я просто повторять для цикла, который получает содержимое каталога, я, возможно, проблема в конечном счете.
Обычно вы будете использовать рекурсию или очереди, чтобы сделать это. – Dave
@Dave Я думал, что рекурсия будет лучшим способом, но я не уверен, как бы я это сделал. –
это не сложно, просто поместите свой код в функцию и сделайте так, чтобы он вызывал себя с новым каталогом для поиска, когда он находит каталог. Очереди лучше, но рекурсия более интуитивная. – Dave