iOS列出现有目录

时间:2012-01-27 18:46:09

标签: objective-c ios xcode cocoa-touch

我已经获得了文档目录的路径并在里面创建了一些目录。我已经知道如何检查目录是否存在,删除它或其文件但是,我怎么能列出目录?谢谢。

我使用的文件列表:

int Count;
    NSString *path;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"SomeDirectoryName"];
    NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
    for (Count = 0; Count < (int)[directoryContent count]; Count++)
    {
        NSLog(@"File %d: %@", (Count + 1), [directoryContent objectAtIndex:Count]);
    }

2 个答案:

答案 0 :(得分:3)

例如,此方法从应用程序的临时目录中删除所有文件:

- (void)cleatTmpDirectory
{
    // Create a local file manager instance
    NSFileManager *localFileManager = [[NSFileManager alloc] init];
    NSURL *directoryToScan = [NSURL fileURLWithPath:[self applicationTmpDirectory]];

    NSDirectoryEnumerator *dirEnumerator = 
    [[localFileManager enumeratorAtURL:directoryToScan
            includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLIsDirectoryKey,nil]
                               options: NSDirectoryEnumerationSkipsHiddenFiles             |   
      NSDirectoryEnumerationSkipsSubdirectoryDescendants | 
      NSDirectoryEnumerationSkipsPackageDescendants
                          errorHandler:nil] retain];

    NSError *error;
    // Enumerate the dirEnumerator results, each value is stored in allURLs
    for (NSURL *theURL in dirEnumerator)
    {
        // Retrieve whether a directory. 
        NSNumber *isDirectory;
        [theURL getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:NULL];

        if ([isDirectory boolValue] == NO)
        {
            [localFileManager removeItemAtURL:theURL error:&error];
        }
    }

    // Release the localFileManager.
    [localFileManager release];
}

如您所见,您应该使用NSDirectoryEnumerator *dirEnumerator并将其随后传递给适当的keys初始化方法。

答案 1 :(得分:1)

使用NSFileManager的-enumeratorAtPath:方法返回的NSDirectoryEnumerator。