2013-02-18 11 views
5

Stworzyłem kilka katalogów w NSDocumentDirectory jakJak uzyskać listę katalogów w katalogu NSDocumentDirectory?

if (![tbxCreateFolder.text isEqualToString:@""]) { 
NSArray *arrPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectoryStr = [arrPaths objectAtIndex:0]; // Get documents folder 
NSString *dataPath = [documentsDirectoryStr stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@",tbxCreateFolder.text]]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){ 

    NSError* error; 
    if([[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]){ 

     NSLog(@"success"); 
     //Perfrom DB Insertation 
    } 
    else 
    { 
     NSLog(@"[%@] ERROR: attempting to write create MyFolder directory", [self class]); 
     NSAssert(FALSE, @"Failed to create directory maybe out of disk space?"); 
    } 
} 

}

Teraz chcę uzyskać listę katalogów, które mają utworzonego w folderze dokumentu, ale odpowiedź jest

NSArray *arrPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *basePathString = ([arrPaths count] > 0) ? [arrPaths objectAtIndex:0] : nil; 
NSLog(@"dirContents %@",basePathString); 

Response :

/Users/amir/Library/Application Support/iPhone Simulator/6.1/Applications/7003E8D5-CCBB-4E54-896B-F4BD2F4D2CB1/Documents 

Odpowiedz

4

Oto kod :

NSString *documentDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
// create directory named "test" 
[[NSFileManager defaultManager] createDirectoryAtPath:[documentDirPath stringByAppendingPathComponent:@"test"] withIntermediateDirectories:YES attributes:nil error:nil]; 
// retrieved all directories 
NSLog(@"%@", [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentDirPath error:nil]); 

NSArray *paths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentDirPath error:nil]; 
BOOL isDir = NO; 
for (NSString *path in paths) { 
    if ([fileManager fileExistsAtPath:path isDirectory:&isDir] && isDir) { 
     // path is directory 
    } 
} 
+0

które odpowiedź również we wszystkich plikach. ale chcę tylko uzyskać nazwy katalogów. –

+0

@AmiriDev Zaktualizowałem kod. – SAPLogix

0

Można to zrobić za pomocą kilku prostych linii kodu

NSString *documentDirectoryPath = // Initialize with Documents path 
BOOL isDir = NO; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSArray *files = [fileManager contentsOfDirectoryAtPath:documentDirectoryPath error:NULL]; 

NSMutableArray *directoriesPaths = [NSMutableArray array]; 
for (NSString *filePath in files) { 
    if ([fileManager fileExistsAtPath:filePath isDirectory:&isDir] && isDir) { 
     [directoriesPaths addObject:filePath]; 
    } 
} 

NSLog(@"directories %@", directoriesPaths); 
+0

możesz wypełnić linię "NSString * documentDirectoryPath = // Inicjalizuj za pomocą ścieżki do dokumentów " –

+0

Pewnie. Masz już ścieżkę do katalogu Documents, w twoim kodzie jest to 'basePathString'. Dodaj mój kod poniżej twojego, ale przed tą zmianą 'NSString * documentDirectoryPath = // Inicjalizuj za pomocą ścieżki Dokumentów' do' NSString * documentDirectoryPath = basePathString' – pawelropa

3

Zawsze można wyliczyć zawartość głównym katalogu z użyciem -fileExistsAtPath:isDirectory: tak:

NSFileManager *sharedFileManager = [NSFileManager defaultManager]; 
NSDirectoryEnumerator *files = [sharedFileManager enumeratorAtPath:yourPath]; 

for (NSString *path in files) { 
    BOOL isDirectory = NO; 
    [sharedFileManager fileExistsAtPath:path isDirectory:&isDirectory]; 
    if (isDirectory) { 
     // you found a directory, so do what you will with it 
    } 
} 
0

spróbować ,

NSArray *arrPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *strFilePath = [[arrPath objectAtIndex:0] 
[[NSFileManager defaultManager] createDirectoryAtPath:[strFilePath stringByAppendingPathComponent:@"Sample"] withIntermediateDirectories:YES attributes:nil error:nil]; 
+0

Czy ta lista będzie również katalogiem czy tylko katalogiem? –