返回每个文件的文件 URL 的 NSArray
Posted
技术标签:
【中文标题】返回每个文件的文件 URL 的 NSArray【英文标题】:Return an NSArray of File URLS for Each File 【发布时间】:2014-04-30 15:26:40 【问题描述】:我希望返回一个NSArray
,其中包含位于ios
的特定文件夹中的所有文件URLS
。
在这种情况下,我正在查看 Ryan/Bob/FolderWithInfo - 其中包含 4 个文件。我想获取每个文件的URL
文件。
这是我正在寻找的输出示例:
NSArray *array = @[
@"file:///var/mobile/Applications/8D5EBBB2-6726-4FE9-95CB-453635443643/Documents/Ryan/Bob/FolderWithInfo/Layout1.csv",
@"file:///var/mobile/Applications/8D5EBBB2-6726-4FE9-95CB-453635443643/Documents/Ryan/Bob/FolderWithInfo/Layout2.csv",
@"file:///var/mobile/Applications/8D5EBBB2-6726-4FE9-95CB-453635443643/Documents/Ryan/Bob/FolderWithInfo/Layout3.csv",
@"file:///var/mobile/Applications/8D5EBBB2-6726-4FE9-95CB-453635443643/Documents/Ryan/Bob/FolderWithInfo/Layout4.csv",
];
这是如何实现的?
编辑: 我已经尝试过这个并考虑过可能会在主路径之前添加,但必须有一种更有效的方法:)
NSError *error;
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
directory = [NSString stringWithFormat:@"%@/%@/%@/%@", directory, @"Ryan, @"Bob", @"FolderWithInfo"];
NSArray *files=[fileMgr contentsOfDirectoryAtPath:directory error:&error];
NSLog(@"mag1 directory: %@",files);
谢谢。
【问题讨论】:
How do I get an NSArray of filenames of all files in a given directory in my app?的可能重复 ***.com/a/907444/2043580 但请注意NSFileManager
只返回相对文件名。所以你应该使用[basePath stringByAppendingPathComponent:fileName]
来获取绝对路径。
@CodeMound 你得到文件名,然后你可以简单地添加文件夹路径。
@CodeMound 返回 URL 的 NSFileManager
方法提供完整的 URL。它是返回 NSString
数组的那些返回文件名。
【参考方案1】:
如 cmets 中所说,使用 - (NSArray *)contentsOfDirectoryAtURL:(NSURL *)url includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask error:(NSError **)error
。
NSFileManager *fm = [NSFileManager defaultManager];
NSError *error;
NSURL *url = [NSURL URLWithString:@"file:///Users/leandros/temp"];
NSArray *urls = [fm contentsOfDirectoryAtURL:url includingPropertiesForKeys:nil options:0 error:&error];
【讨论】:
以上是关于返回每个文件的文件 URL 的 NSArray的主要内容,如果未能解决你的问题,请参考以下文章
给定ab两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出ab文件共同的url?
String(contentsOf: URL) 返回“没有这样的文件或目录”