如何获取NSDocumentDirectory中的目录列表?

时间:2013-02-18 07:16:06

标签: ios objective-c nsfilemanager nsdocumentdirectory

我在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?");
    }
}

}

现在我想获取我在文档文件夹中创建的目录列表,但响应是

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

回应是:

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

4 个答案:

答案 0 :(得分:4)

以下是代码:

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
     }
}

答案 1 :(得分:3)

您始终可以使用-fileExistsAtPath:isDirectory:枚举顶级目录的内容,如下所示:

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
    }
}

答案 2 :(得分:0)

您可以使用几行简单的代码

来完成此操作
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);

答案 3 :(得分:0)

试试这个,

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