2010-01-31 11 views
6

मैं एक ऐप की दस्तावेज़ निर्देशिका में मौजूद निर्देशिकाओं की सूची वापस करने की कोशिश कर रहा हूं। मैं किसी दिए गए एक्सटेंशन (जैसे .txt फ़ाइलों या .png फ़ाइलों) की सभी फ़ाइलों वाली एक सरणी प्राप्त करने में सक्षम हूं और सभी सामग्री (निर्देशिकाओं सहित) को वापस करने में सक्षम हूं। समस्या तब उत्पन्न होती है जब मैं केवल निर्देशिकाओं को वापस करना चाहता हूं। क्या ऐसा करने का कोई आसान तरीका है?दस्तावेज़ निर्देशिका में निर्देशिकाओं की सरणी प्राप्त करें

यहाँ सब .txt फ़ाइलें लौटने के लिए मेरे कोड है:

- (ViewController *) init { 
    if (self = [super init]) self.title = @"Text Files"; 

    // get the list of .txt files 
    directoryList = [[[[NSFileManager defaultManager] directoryContentsAtPath:DOCUMENTS_FOLDER] 
         pathsMatchingExtensions:[NSArray arrayWithObjects:@".txt", nil]] retain]; 
    NSLog(@"%@", directoryList); 

    return self; 
} 

और फ़ाइलों के सभी के लिए

- (ViewController *) init { 
    if (self = [super init]) self.title = @"Text Files"; 

    // get the list of all files and directories 
    directoryList = [[[NSFileManager defaultManager] directoryContentsAtPath:DOCUMENTS_FOLDER] retain]; 

    NSLog(@"%@", directoryList); 

    return self; 
} 

उत्तर

22

इस प्रयास करें:

- (ViewController *) init { 
    if (self = [super init]) self.title = @"Text Files"; 

    // get the list of all files and directories 
    NSFileManager *fM = [NSFileManager defaultManager]; 
    fileList = [[fM directoryContentsAtPath:DOCUMENTS_FOLDER] retain]; 
    NSMutableArray *directoryList = [[NSMutableArray alloc] init]; 
    for(NSString *file in fileList) { 
     NSString *path = [DOCUMENTS_FOLDER stringByAppendingPathComponent:file]; 
     BOOL isDir = NO; 
     [fM fileExistsAtPath:path isDirectory:(&isDir)]; 
     if(isDir) { 
      [directoryList addObject:file]; 
     } 
    } 

    NSLog(@"%@", directoryList); 

    return self; 
} 
+0

बहुत बढ़िया जवाब subw से बदलें। फ़ाइल ExxAtPath के बारे में नहीं पता था: isDirectory: उदाहरण विधि; मैं NSFileManager दस्तावेज़ों का एक पठन होगा। – Jack

+0

पीएस ने काम किया। – Jack

+2

निर्देशिका सामग्रीऑफपाथ: बहिष्कृत है। SubpathsOfDirectoryAtPath होना चाहिए: इसके बजाय – DerWOK

2

Mrueg यह लिखा था सब लेकिन एक बात यह है कि

fileList = [[fM directoryContentsAtPath:DOCUMENTS_FOLDER]; 

fileList = [fileManager contentsOfDirectoryAtPath:filePath error:nil]; 
+0

सही। "निर्देशिका सामग्री एंटीपाथ" बहिष्कृत है। –

संबंधित मुद्दे