簡體   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