从文档目录ios获取文件名
在我的应用程序中,我下载的PDF文件存储在“文档”目录下不同的子文件夹下。
现在我有我想要在“文档”目录中获取其path的文件名,但问题是我不知道该文件存储下的确切的子文件夹。
那么有没有什么方法可以给我文件path的文件名,就像有一个方法适用于主包:
(NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension
我不想遍历每个文件夹这是一个乏味的方式。
谢谢。
您可以像这样search文档目录:
NSString *searchFilename = @"hello.pdf"; // name of the PDF you are searching for NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory]; NSString *documentsSubpath; while (documentsSubpath = [direnum nextObject]) { if (![documentsSubpath.lastPathComponent isEqual:searchFilename]) { continue; } NSLog(@"found %@", documentsSubpath); }
编辑:
您也可以使用NSPredicate。 如果文档目录中有数千个文件,则可能会因内存不足错误而崩溃。
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.lastPathComponent == %@", searchFilename]; NSArray *matchingPaths = [[[NSFileManager defaultManager] subpathsAtPath:documentsDirectory] filteredArrayUsingPredicate:predicate]; NSLog(@"%@", matchingPaths);
Swift 2.2很简单:
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first! as NSString let plistPath = paths.stringByAppendingPathComponent("someFile.plist")
你必须走树才能find文件; 没有等同于〜/ Documents目录中的-pathForResource:ofType。