从文档目录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。