2013-02-18 52 views
5

我在NSDocumentDirectory创造了一些目录,如何获取NSDocumentDirectory中directores的列表?

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

这是代码:

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

也在所有文件中响应。但我只想得到目录的名称。 – 2013-02-18 08:15:31

+0

@AmiriDev我已经更新了代码。 – SAPLogix 2013-02-18 08:28:39

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); 
+0

可以请你填写“NSString * documentDirectoryPath = //用文档路径初始化” “ – 2013-02-18 08:26:52

+0

当然可以。你已经有了Documents目录的路径,在你的代码中它是'basePathString'。在你的下面添加我的代码,但在此之前,将'NSString * documentDirectoryPath = //用文档路径初始化为'NSString * documentDirectoryPath = basePathString' – pawelropa 2013-02-18 09:06:25

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

试试这个,

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

此列表文件是否存在或只有目录? – 2013-07-11 16:47:38