iPhone:NSFileManager fileExistsAtPath:Каталог NSFileManager:не работает должным образом?

StackOverflow https://stackoverflow.com/questions/1196885

Вопрос

Я работаю над приложением для взломанных 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];
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top