Aller au contenu

[Résolu] Ouvrir une ressource par son nom.


The_Moye

Recommended Posts

Bonjour bonjour !

Nouveau défit pour ma petite personne : ouvrir un fichier par son nom!

Je ne comprends pas vraiment comment Android gère les chemins.

Admettons que je veuille lire le fichier "plop.txt" contenu dans le dossier "raw" de mon projet Android.

J'arrive sans problème à l'ouvrir de façon statique, en faisant de la sorte :

MonContext.getResources().openRawResource(R.raw.plop);

Mais je n'arrive pas à l'ouvrir de façon dynamique, en passant le nom du fichier à ouvrir.

Je pensais utiliser les FileInputStream, mais je ne sais pas où aller chercher mon fichier.

L'appel suivant me retourne l'erreur "java.io.FileNotFoundException" :

FileInputStream("res/raw/plop.txt")

Quel chemin dois je lui passer?

edit : certains exemples parlent d'un chemin du type "/data/data/your.package.name/files".

Soit, mais dois je créer un dossier "files" dans l'arborescence de mon projet et y glisser mes ressources?

Ce dossier est il créer automatiquement?

Modifié par The_Moye
Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse Tama Chan ,

Mais concrètement, pourquoi passer par l'ID plutôt que par le nom?

Que dois je passer comme paramètres à getIdentifier?

public int getIdentifier (String name, String defType, String defPackage)

name = le nom de ma ressource? (plop.txt)

defType = le type de ressource? (genre raw, drawable... ?)

defPackage = le package de mon appli?

edit : j'avais presque tout bon, il ne faut simplement pas préciser le .txt, soit :

int tmp = mContext.getResources().getIdentifier("plop", "raw", "testopengl.premier");

edit : Du coup ça fonctionne parfaitement, merci Tama Chan.

Modifié par The_Moye
Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse Tama Chan ,

Mais concrètement, pourquoi passer par l'ID plutôt que par le nom?

Que dois je passer comme paramètres à getIdentifier?

public int getIdentifier (String name, String defType, String defPackage)

name = le nom de ma ressource? (plop.txt)

defType = le type de ressource? (genre raw, drawable... ?)

defPackage = le package de mon appli?

edit : j'avais presque tout bon, il ne faut simplement pas préciser le .txt, soit :

int tmp = mContext.getResources().getIdentifier("plop", "raw", "testopengl.premier");

edit : Du coup ça fonctionne parfaitement, merci Tama Chan.

Toutefois cette ressource de retrouver l'identifiant est très lourde en terme de ressource...

Si beaucoup de requête ou de lourd fichier, je te conseille de passer par un thread

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...