Как определить, существует ли файл в пакете приложений?
извините, тупой вопрос номер 2 сегодня. Можно ли определить, содержится ли файл в пакете приложений? Я могу получить доступ к файлам без проблем, т. е.
NSString *pathAndFileName = [[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"];
но не могу понять, как проверить, существует ли файл там в первую очередь.
в отношении
Дэйв
5 ответов
этот код работал для меня...
NSString *pathAndFileName = [[NSBundle mainBundle] pathForResource:fileName ofType:nil];
if ([[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName])
{
NSLog(@"File exists in BUNDLE");
}
else
{
NSLog(@"File not found");
}
надеюсь, это поможет кто-то...
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"filename"];
if(![fileManager fileExistsAtPath:path])
{
// do something
}
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
}
то же, что и @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...")
}