web-dev-qa-db-fra.com

Ouvrir un fichier du dossier sous Android

J'ai un fichier .gif dans le dossier des ressources, comme ceci: assets/Files/Android.gif. quand j'essaie d'ouvrir le fichier, il lève une exception à la deuxième ligne 

AssetManager mngr=getAssets();
InputStream is2=mngr.open("Files/Android.gif");

alors Est-ce que j'essaie d'ouvrir un fichier image malgré le fait que le même code fonctionne si j'essaie d'ouvrir un fichier texte? quel peut être le problème ici.

16
Mina Samy

Ces lignes fonctionnent parfaitement--

InputStream assetInStream=null;

try {
    assetInStream=getAssets().open("icon.png");
    Bitmap bit=BitmapFactory.decodeStream(assetInStream);
    img.setImageBitmap(bit);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if(assetInStream!=null)
    assetInStream.close();
}

Si votre image est très grande, vous devez redimensionner votre image avant de la décoder en Bitmap. Voir Comment afficher efficacement une grande image

30
Tofeeq

Je soupçonne que vous recevez des plaintes à propos du type d’exception IOException non gérée. Si tel est le cas, vous devez placer l'appel à mgr.open dans un bloc try-catch pour gérer l'exception susceptible de se produire lors de la récupération de l'objet InputStream.

AssetManager mngr = getAssets();
try {
    InputStream is2 = mngr.open("Files/Android.gif");
} catch (final IOException e) {
    e.printStackTrace();
}
4
keno

Je pense que la meilleure façon de faire est de mettre votre image dans le répertoire res/drawable. Ensuite, vous pouvez obtenir un Drawable comme ceci:

Drawable d = Resources.getSystem().getDrawable(R.drawable.Android);
1
AdamC

Je ne sais pas si les choses ont changé ou non, mais j'avais une application dans Android 1.1 qui ouvrait des icônes pour ensuite les afficher dans une vue et je l'avais fait comme ça:

BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));
Bitmap bitmap = BitmapFactory.decodeStream(buf);
1
JRL

Je ne crois pas que gif soit supporté automatiquement sur Android. Essayez un png ou jpg avec le même code.

0
Adam Freeman

Mina, j'avais le même problème ... J'avais des images et un fichier XML dans "assets" et je pouvais lire le fichier XML mais pas les images. Après quelques heures de frustration, j'ai finalement trouvé la solution!

J'ai posté la solution ici: Null-pointeur problème affichant une image du dossier des actifs Android 2.2 SDK

0