iPhone:NSFileManager fileExistsAtPath:Каталог NSFileManager:не работает должным образом?
-
20-09-2019 - |
Вопрос
Я работаю над приложением для взломанных iPhone.Я пытаюсь получить только каталоги папки.итак, я делаю это:
NSArray *contentOfFolder = [[NSFileManager defaultManager] directoryContentsAtPath:path];
NSLog(@"contentOfFolder: %@", contentOfFolder);
directoriesOfFolder = [[NSMutableArray alloc] initWithCapacity:100];
for (NSString *aPath in contentOfFolder) {
NSLog(@"apath: %@", aPath);
BOOL isDir;
if ([[NSFileManager defaultManager] fileExistsAtPath:aPath isDirectory:&isDir] &&isDir)
{
[directoriesOfFolder addObject:aPath];
NSLog(@"directoriesOfFolder %@", directoriesOfFolder);
}
}
NSLog(@"dirctories %@", directoriesOfFolder);
но посмотрите, что я получаю.когда я получаю содержимое папки, все выглядит нормально:
2009-07-28 23:23:35.930 Дремлющий[573:207] новый путь /частный/var 2009-07-28 23:23:35.945 Дремлющий[573:207] Владелец контента:( Цепочки ключей, "Управляемые настройки", Мобильное устройство, резервные копии, кэш, база данных, ea, пустые, папки, библиотека, локальная, блокировка,, журнал, журналы, мобильный, сообщения, настройки, root, выполнить, спулить, сохранить, tmp, виртуальная машина )
но тогда:
2009-07-28 23:23:35.950 Дремотный[573:207] апат:Брелки 2009-07-28 23:23:35.954 Дремотный[573:207] апат:Управляемые настройки 2009-07-28 23:23:35.959 Отключающий[573:207] apath:Мобильное устройство 2009-07-28 23:23:35.984 Отключающий[573:207] apath:резервные копии 2009-07-28 23:23:35.993 Дремлющий[573:207] apath:Кэш 2009-07-28 23:23:36.002 Дремлющий[573:207] апат:db 2009-07-28 23:23:36.011 Дремлющий[573:207] apath:ea 2009-07-28 23:23:36.019 Дремотный[573:207] апат:пусто 2009-07-28 23:23:36.028 Дремлющий[573:207] apath:папки 2009-07-28 23:23:36.037 Дремлющий[573:207] apath:библиотека 2009-07-28 23:23:36.046 Дремлющий[573:207] Каталогизатор ( библиотека )
только "lib"!распознается как папка.как это может быть?остальные тоже являются папками.Я подтвердил это через SSH.
у кого-нибудь есть идея?Я делаю что-то не так?
Решение
Это действительно простая ошибка, которую можно совершить, но ее также очень легко исправить.Перечисление содержимого каталога дает вам только имя элемента, а не полный путь к элементу.Вы должны сами построить полный путь.Итак, где у вас есть:
for (NSString *aPath in contentOfFolder) {
NSLog(@"apath: %@", aPath);
BOOL isDir;
if ([[NSFileManager defaultManager] fileExistsAtPath:aPath isDirectory:&isDir] &&isDir) {
[directoriesOfFolder addObject:aPath];
NSLog(@"directoriesOfFolder %@", directoriesOfFolder);
}
}
У тебя действительно должно быть это:
for (NSString *aPath in contentOfFolder) {
NSString * fullPath = [path stringByAppendingPathComponent:aPath];
BOOL isDir;
if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] &&isDir) {
[directoriesOfFolder addObject: fullPath];
}
}