Question

Comment puis-je prendre un fichier dans le répertoire de l'application (le même dossier le .app est), et obtenir son chemin absolu. Dites le chemin relatif est « Data / fichier.txt », comment pourrais-je utiliser Objective C pour obtenir que comme un chemin absolu? Je l'utilisateur à saisir leur nom de dossier de base, si c'est une aide.

S'il vous plaît aider,

HiGuy

Était-ce utile?

La solution

Trouvez l'emplacement de l'application en cours d'exécution en faisant:

NSString * applicationPath = [[NSBundle mainBundle] bundlePath];

Ce qui renvoie quelque chose comme:

/Users/myUser/Library/Application Support/iPhone Simulator/User/Applications/317CF5C7-57B3-42CE-8DF4-4DD10B070D95/Assignment1a.app

Utilisez ensuite - (NSString *)stringByDeletingLastPathComponent pour couper le dernier bit.

Autres conseils

J'utilise les méthodes de NSURL qui résolvent les URL pour moi, comme ceci:

NSURL * bundle = [[NSBundle mainBundle] bundleURL];
NSURL * file = [NSURL URLWithString:@"../Data/file.txt" relativeToURL:bundle];
NSURL * absoluteFile = [file absoluteURL];

Le « ../ » est nécessaire, car il serait contraire essayer de localiser le fichier dans votre paquet app. Mettre le « ../ » au préalable lui dira de regarder dans le dossier contenant le paquet, et non dans le paquet lui-même. En outre, -[NSBundle bundleURL] est une API 10.6+, mais il est trivial de répliquer la fonctionnalité en utilisant une méthode pratique de NSURL et -[NSBundle bundlePath].

Vous devriez juste être en mesure de concaténer le dossier racine de l'application, avec le chemin relatif. Vous pouvez obtenir dans le répertoire de l'application avec NSHomeDirectory (), afin d'obtenir le chemin absolu, vous pouvez faire quelque chose comme ce qui suit:

NSString *path = [NSHomeDirectory() stringByAppendingString: @"/Data/file.txt"];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top