iPhone : NSFILEMANAGER FILEEXISSTATPATH ​​: ISDIRECTORY : 제대로 작동하지 않습니까?

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

문제

나는 Jailbroken 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 Drowser [573 : 207] New Path /Private /Var 2009-07-28 23 : 23 : 35.945 Drowser [573 : 207] ContentOffolder : (Keychains, "Managed Preferences", Mobiledevice, 백업, 캐시, DB, EA, 빈, 폴더, LIB, 로컬, 잠금, 로그, 로그, 모바일, MSG, 환경 설정, 루트, 실행, 스풀, 스풀, 스풀)

하지만:

2009-07-28 23 : 23 : 35.950 Drowser [573 : 207] Apath : Keychains 2009-07-28 23 : 23 : 35.954 Drowser [573 : 207] Apath : 관리 선호도 2009-07-28 23 : 23 : 35.959 Drowser [573 : 207] Apath : Mobiledevice 2009-07-28 23 : 23 : 35.984 Drowser [573 : 207] Apath : 백업 2009-07-28 23 : 23 : 35.993 Drowser [573 : 207] Apath : Cache 2009-07- 28 23 : 23 : 36.002 Drowser [573 : 207] Apath : DB 2009-07-28 23 : 23 : 36.011 Drowser [573 : 207] Apath : EA 2009-07-28 23 : 23 : 36.019 Drowser [573 : 207] APATH : 빈 2009-07-28 23 : 23 : 36.028 드로우저 [573 : 207] Apath : 폴더 2009-07-28 23 : 23 : 23 : 36.037 Drowser [573 : 207] Apath : Lib 2009-07-28 23:23 : 36.046 Drowser [573 : 207] DirectryOffolder (LIB)

"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