2010-06-13 5 views
22
InputStream myInput = myContext.getAssets().open("MyFolder/" + "MyFile.db3"); 

J'ai un fichier dans le dossier assets dans un sous-dossier comme ci-dessus. Il n'obtient pas le fichier cependant, existe-t-il un moyen spécial de spécifier un sous-dossier dans le dossier assets?Actifs Android avec sous-dossiers

Ian

+1

Cela semble correct - des exceptions telles que IOException sont-elles levées? –

+0

Oui, mais étrangement l'exception est vide, pas de "cause" –

+0

Si vous pouvez coller la trace de la pile dans votre question d'origine, ce serait très utile. –

Répondre

39

Edit: a tort sur les sous-dossiers.
Ce code fonctionne très bien sur 1,5 (pour un fichier sample.txt placé sous sub dossier dans assets):

InputStream is = getAssets().open("sub/sample.txt"); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
String line = null; 
while ((line = br.readLine()) != null) { 
    Log.e("wtf", line); 
} 
br.close(); 

Êtes-vous sûr que vous avez les noms non?

+0

Les docs disent que vous pouvez bien. –

5

Votre fichier est-il supérieur à 1 Mo?

Je remarque que j'obtiens la même exception IOException vide si j'essaie d'ouvrir une ressource dont la taille est supérieure. Le fait qu'il soit dans un sous-dossier pourrait être un faux-fuyant. J'essaie d'ouvrir un gros fichier texte afin que je puisse contourner cette limite en le divisant. Pouvez-vous faire quelque chose de similaire avec votre fichier .db3?

+0

omfg wtf !!! c'est une erreur stupide et ils devraient corriger cela. merci beaucoup d'avoir écrit cette réponse, c'est certainement le même cas pour moi où j'avais un fichier .ogg sous "music/blah.ogg" qui ne fonctionnait pas car il dépassait largement 1 mb, mais un autre fichier "musique/foo.ogg "fonctionne et c'est seulement 26 kb ... –

5
"MyFolder/" + "MyFile.db3" 

Un nom de fichier pour les fichiers ajoutés au dossier assets doit être en minuscule. Ainsi, un nom de fichier tel que MyFolder et Myfile.db3 n'est pas valide. Renommez-les en "myfolder" et "myfile.db3", alors tout ira bien.

Questions connexes