繁体   English   中英

从文档目录ios通过文件名获取文件路径

[英]Get file path by file name from documents directory ios

在我的应用程序中,我下载了PDF文件,这些文件存储在不同子文件夹下的“文档”目录中。

现在,我具有要在“文档”目录中获取其路径的文件名,但是问题是我不知道该文件存储在其下的确切子文件夹。

因此,有没有一种方法可以按文件名为我提供文件路径,就像有一种方法适用于主捆绑包一样:

(NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension

我不想遍历每个文件夹,这是一个乏味的方法。

谢谢。

您可以像这样搜索文件目录:

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。 如果documents目录中有成千上万个文件,则可能会因内存不足错误而崩溃。

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")

您必须走到树上才能找到文件。 在〜/ Documents目录中没有等效的-pathForResource:ofType。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM