web-dev-qa-db-fra.com

Comment pouvez-vous déterminer si un fichier existe dans l'ensemble d'applications?

Désolé, stupide question numéro 2 aujourd'hui. Est-il possible de déterminer si un fichier est contenu dans le bundle d'applications? Je peux accéder aux fichiers sans problème, c'est-à-dire,

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

Mais je ne peux pas comprendre comment vérifier si le fichier existe en premier lieu.

Cordialement

Dave

49
Magic Bullet Dave
[[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName];
68
Rob Napier

Ce code a fonctionné pour moi ...

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

J'espère que cela aidera quelqu'un ...

15
Arkady

pathForResource retournera nil si la ressource n'existe pas. Une nouvelle vérification avec NSFileManager est redondante.

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
 }
4
crow
NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"filename"];
    if(![fileManager fileExistsAtPath:path])
    {
        // do something
    }
4
Iggy

Identique à @Arkady, mais avec Swift 2.0:

Tout d'abord, appelez une méthode sur mainBundle() pour aider à créer un chemin d'accès à la ressource:

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

Ensuite, appelez une méthode sur defaultManager() pour vérifier si le fichier existe:

if NSFileManager.defaultManager().fileExistsAtPath(path) {
    NSLog("The file exists!")
} else {
    NSLog("Better luck next time...")
}
1
sudo make install