Je suis nouveau dans la programmation iPhone. Je tiens à lire le contenu d'un fichier texte situé dans un sous-dossier du dossier de ressources. P>
La structure de dossiers de ressources est la suivante: p>
ressource p>
Il existe plusieurs fichiers nommés "data.txt", alors comment puis-je accéder aux fichiers de chaque dossier? Je sais comment lire le fichier texte, mais si la structure de ressources est similaire à la structure ci-dessus, comment puis-je obtenir le chemin? P>
Par exemple, si je veux accéder au fichier "data.txt" de dossier3, comment puis-je obtenir le chemin de fichier? p>
S'il vous plaît suggérer. P>
4 Réponses :
NSBundle* bundle = [NSBundle mainBundle]; NSString* path = [bundle bundlePath]; This gives you the path to your bundle. From there on, you can navigate your folder structure.
Pour poursuivre les psychotiks Répondez à un exemple complet ressemblerait à ceci: Notez que vous pouvez utiliser -Pathforresource: ofType: indirectory pour accéder à des ressources dans des sous-répertoires. P> p>
Mais il y a plusieurs dossiers avec le même nom dans différents dossiers. donc dans ce cas, comment peut atteindre le chemin
@Rupesh: Pour le deuxième dossier, vous devez utiliser: [THEBUNDLE PATHFORRESOURCE: @ "DATA" OFTYPE: @ "TXT" Indirectory: @ "Folder3 / Dossier1"] Code>. Notez que
indirectory: code> argument est relatif à la racine du paquet.
VOUS DEVEZ VRAIMENT UTILISER [NSSTRING STRINGWIHCONTENTSOFFILE: NSUPATF8StringCoding Erreur: NULL] CODE>, de cette façon, la mémoire est "gérée" i>, et plus important encore
initwithcontentsoffile: Le code> est obsolète depuis Mac OS X 10.4 et Non disponible sur iPhone OS B>. Donc, le code ne fonctionnera que dans le simulateur.
@PEYLOW - Je suis d'accord avec toi. L'exemple est une version modifiée de la documentation NSBundle qui n'utilise pas de pools de l'autoraélase.
@PEYLOW - tandis qu'IitwithContentsofurl est effectivement obsolète, Apple n'a donc pas besoin de vous demander de spécifier un codage (mouvement sage de leur part). Donc, la méthode initwithcontentsofurl: codage: Erreur: est disponible dans iOS 2.0 et ultérieure (au moins via iOS 5.1).
Et si je veux récupérer tous les fichiers du dossier, cela ne semble pas fonctionner .... Nstring * inworkPath = [[[[[[[NSBundle MainBundune] ResourcePath] StringByAppendingPathcomponent: @ "En-travail"]; NSARRAY * NOMDONTENTS = [[NSFILEMANOGER BLABLEMANGER] CONTENU DEFDIRACTORYATPATH: ERREUR INTERWWORKPATH: & Erreur];
Votre "Dossier de ressources" em> est en réalité le contenu de votre paquet principal, connais également en tant que faisceau d'applications. Vous utilisez Chargement du contenu d'un fichier en tant que chaîne est effectuée. Avec le pathforresource: detype: code> ou
pathforresource: detype: indirectoire: code> pour obtenir le chemin complet d'une ressource.
StringwithContentsOffile: codage: ERREUR: ERREUR: ERREUR: ERREUR: CODE> Méthode pour une chaîne d'autorélisation avec
initwithContentsOffile: codage: Erreur: code> Si vous voulez une chaîne conservée. P>
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Data"
ofType:@"txt"
inDirectory:@"Folder1"];
if (filePath != nil) {
theContents = [NSString stringWithContentsOfFile:filePath
encoding:NSUTF8StringEncoding
error:NULL];
// Do stuff to theContents
}
Réponse de Shirkrin et La réponse de Peylow ci-dessus était à la fois utile, et j'ai réussi à utiliser J'ai aussi trouvé Une solution alternative ici qui convient à mes besoins légèrement mieux, alors j'ai pensé que je le partageais. En particulier, voir Ce lien . P> Par exemple, disons que j'ai les références de dossiers suivantes (icônes bleues, groupes sont jaunes): p> alors je peux accéder à des fichiers image tels que ceci: p> comme une note latérale, Le Pathforresource: ofType: indirectoire: code> Pour accéder aux fichiers avec le même nom dans différents dossiers de mon ensemble d'applications.
p>
Pathforresource: ofType: indirectory: code> équivalent ressemble à ceci: p>