如何获取iPhone上所有文件的列表?
这是可能的,还是我只能从某个目录或已知路径获取文件?
答案 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
。