Как вы можете определить, существует ли файл в комплекте приложений? - PullRequest
48 голосов
/ 08 января 2010

Извините, тупой вопрос № 2 сегодня. Можно ли определить, содержится ли файл в комплекте приложений? У меня нет проблем с доступом к файлам, т.е.

NSString *pathAndFileName = [[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"];

Но не могу понять, как проверить, существует ли файл там.

Привет

Дейв

Ответы [ 5 ]

68 голосов
/ 08 января 2010
[[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName];
15 голосов
/ 15 декабря 2013

Этот код работал для меня ...

NSString *pathAndFileName = [[NSBundle mainBundle] pathForResource:fileName ofType:nil];
if ([[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName])
{
    NSLog(@"File exists in BUNDLE");
}
else
{
    NSLog(@"File not found");
}

Надеюсь, это кому-нибудь поможет ...

4 голосов
/ 24 февраля 2016

pathForResource вернет nil, если ресурс не существует. Повторная проверка с NSFileManager является избыточной.

Obj-C:

 if (![[NSBundle mainBundle] pathForResource:@"FileName" ofType:@"plist"]) {                                              
      NSLog(@"The path could not be created.");
      return;
 }

Swift 4:

 guard Bundle.main.path(forResource: "FileName", ofType: "plist") != nil else {
      print("The path could not be created.")
      return
 }
3 голосов
/ 19 марта 2010
NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"filename"];
    if(![fileManager fileExistsAtPath:path])
    {
        // do something
    }
1 голос
/ 25 июля 2015

То же, что и @Arkady, но с Swift 2.0:

Сначала вызовите метод на mainBundle(), чтобы помочь создать путь к ресурсу:

guard let path = NSBundle.mainBundle().pathForResource("MyFile", ofType: "txt") else {
    NSLog("The path could not be created.")
    return
}

Затем вызовитеметод defaultManager(), чтобы проверить, существует ли файл:

if NSFileManager.defaultManager().fileExistsAtPath(path) {
    NSLog("The file exists!")
} else {
    NSLog("Better luck next time...")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...