La difficulté avec la lecture de fichiers à partir du dossier des actifs sous Android
Cette question est en ce qui concerne cette une. Puisque c'est une question précise, j'ai déménagé à la question en elle-même ici. J'ai essayé de créer un fichier de texte "foo.txt" une de le lire dans mon Activité:
File file = new File("/assets/foo.txt");
if ( file.exists() ){
txtView.setText("Exists");
}
else{
txtView.setText("Does not exist");
}
"Foo.txt" fichier se trouve dans mon dossier des actifs, et j'ai vérifié qu'il existe dans l'OS. Mon TextView obtient toujours le texte "N'existe pas" dans le code ci-dessus. J'ai essayé d'aller
File file = new File("/assets/foo.txt");
Scanner in = new Scanner(file);
ainsi, mais ce produit est le suivant inline d'erreur: "une exception non Gérée du type FileNotFoundException". Eclipse suggèrent alors d'impliquer les try/catch, ce qui supprime l'erreur, mais il ne fonctionne pas correctement, alors soit.
J'ai également essayé le réglage de mes actifs dossier à Utiliser comme source de dossier", mais cela ne fait aucune différence. J'ai également essayé d'utiliser les raw d'un dossier que plusieurs personnes suggère de ne les utiliser. Je suis d'options et de vraiment besoin d'aide pour celui-ci. Devrait être facile...
Essayer une autre est d'aller
AssetManager assetManager = getResources().getAssets();
InputStream is = assetManager.open("assets/foo.txt");
mais cela produit le inline erreur dans la deuxième ligne: "Unhandled exception de type IOException".
OriginalL'auteur Krøllebølle | 2012-03-12
Vous devez vous connecter pour publier un commentaire.
Je suis avec CommonsWare dans ce cas (c'est le côté sûr 🙂 ), mais il devrait être:
Ne pas utiliser
InputStream is = assetManager.open("assets/foo.txt");
Est-il tout changer si vous utilisez
this.getAssets()
au lieu degetResources().getAssets()
?aussi, veuillez nettoyer et reconstruire le projet.
Ok, donc je n'ai nettoyer le projet, et des œuvres tout à coup, ne sais pas si c'était le propre qui a fait le truc ou une bonne nuit de sommeil. MAIS il doit être avec l'instruction try/catch @imrankhan décrit (Eclipse l'exige). Merci! \o/
Également édité ton post avec le code qui fonctionne.
OriginalL'auteur MByD
Vous n'avez pas accès
assets/
au moment de l'exécution à l'aide deFile
. Vous accédez àassets/
au moment de l'exécution à l'aide deAssetManager
, que vous pouvez obtenir viagetResources().getAssets()
.Voir les autres réponse: vous devez vous débarrasser de
assets/
dans votre chemin.OriginalL'auteur CommonsWare
essayez ceci :
pouvez-vous coller me passé de votre fichier, comme yourprojectname/assets/nom de fichier??
voir mon edit solution
Merci, ça fonctionne après que j'ai fait le nettoyer comme @BinyaminSharet suggéré. Eclipse demandes try/catch autour de l'inputStream = am.open("foo.txt"); et ça marche fin maintenant. Merci!
OriginalL'auteur ρяσѕρєя K