列出iPhone上的所有文件

时间:2011-08-17 22:29:24

标签: iphone objective-c file detect nsfilemanager

目标C中的

如何获取iPhone上所有文件的列表?

这是可能的,还是我只能从某个目录或已知路径获取文件?

3 个答案:

答案 0 :(得分:7)

不是没有破坏你的手机。所有应用都位于沙盒中,只能看到某些文件。

答案 1 :(得分:1)

不,你可以只在沙盒中获取文件。要显示当前目录,请使用以下代码:

- (NSString *) returnFilePath {
    NSArray *pathArray =
    NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    return [pathArray objectAtIndex:0];
}

答案 2 :(得分:1)

我不确定为什么人们会说您的应用只能看到沙盒中的某些文件。从iOS 2.x开始(我上次尝试过这样的事情),您可以使用NSFileManager列出几乎任何目录中的文件。这里有一些代码可以获取特定目录中所有文件名称的全部

- (NSArray *)allFiles:(NSString *)aPath
    NSMutableArray * listing = [NSMutableArray array];
    NSArray * fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:aPath error:nil];
    if (!fileNames) return listing;
    for (NSString * file in fileNames) {
        NSString * absPath = [aPath stringByAppendingPathComponent:file];
        BOOL isDir = NO;
        if ([[NSFileManager defaultManager] fileExistsAtPath:absPath isDirectory:&isDir]) {
            if (isDir) {
                [listing addObject:absPath];
                [listing addObjectsFromArray:[self allFiles:absPath]];
            } else {
                [listing addObject:absPath];
            }
        }
    }
    return listing;
}

这是一个非常简单的递归函数的例子。当然,它可以被修改为使用块作为回调更有效地工作,甚至可以合并NSOperation