2013-02-18 23 views
5

Tôi đã tạo ra một số thư mục trong NSDocumentDirectory nhưLàm thế nào để có được danh sách các giám đốc trong 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?"); 
    } 
} 

}

Bây giờ tôi muốn có được danh sách các thư mục mà tôi đã tạo ra trong thư mục tài liệu nhưng phản ứng là

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

đáp ứng là :

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

Trả lời

4

Đây là mã :

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

phản hồi trong tất cả các tệp. nhưng tôi chỉ muốn lấy tên của các thư mục. –

+0

@AmiriDev tôi đã cập nhật mã. – SAPLogix

0

Bạn có thể làm điều này với vài dòng code đơn giản

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

bạn có thể vui lòng hoàn thành dòng "NSString * documentDirectoryPath = // Khởi tạo với đường dẫn Tài liệu " –

+0

Chắc chắn. Bạn đã có đường dẫn đến thư mục Documents, trong mã của bạn, nó là 'basePathString'. Thêm mã của tôi bên dưới của bạn nhưng trước đó thay đổi 'NSString * documentDirectoryPath = // Khởi tạo với tài liệu path' thành' NSString * documentDirectoryPath = basePathString' – pawelropa

3

Bạn luôn có thể liệt kê các nội dung của thư mục cấp cao nhất sử dụng -fileExistsAtPath:isDirectory: như thế này:

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

thử này ,

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

Danh sách này sẽ liệt kê các thư mục chỉ hoặc chỉ? –

Các vấn đề liên quan