avec ce code ci-dessous, j'essaie d'accéder au fichier qui est stocké dans asset/raw
dossier, mais en obtenant null
et
E/ERR: file:/Android_asset/raw/default_book.txt (No such file or directory)
erreur, mon code est:
private void implementingDefaultBook() {
String filePath = Uri.parse("file:///Android_asset/raw/default_book.txt").toString();
File file = new File(filePath);
try {
FileInputStream stream = new FileInputStream(file);
} catch (Exception e) {
e.printStackTrace();
Log.e("ERR ", e.getMessage());
} catch (OutOfMemoryError e) {
e.printStackTrace();
}
}
Placez votre fichier texte dans le répertoire/assets sous le projet Android Android et utilisez la classe AssetManager comme suit pour y accéder.
AssetManager am = context.getAssets();
InputStream is = am.open("default_book.txt");
Ou vous pouvez également placer le fichier dans le répertoire/res/raw, d'où le fichier est accessible par un identifiant comme suit
InputStream is =
context.getResources().openRawResource(R.raw.default_book);
Les actifs et les ressources sont des fichiers sur votre machine de développement. Ce ne sont pas des fichiers sur l'appareil.
Pour les actifs, utilisez open()
sur AssetManager
pour obtenir un InputStream
sur votre actif.
Aussi, FWIW:
Uri.parse("file:///Android_asset/raw/default_book.txt").toString()
est inutile, car il vous donne la même chaîne que celle avec laquelle vous avez commencé
file:///Android_asset/
ne fonctionne que pour WebView
Comme la question réelle n'a pas été suffisamment répondue, c'est parti
InputStream is = context.getAssets().openFd("raw/"+"filename.txt")
le contexte peut être this
ou getActivity()
ou fondamentalement tout autre contexte
L'important est d'inclure le dossier avant le nom de fichier séparé par un /
InputStream is = getAssets().open("default_book.txt");