En J2ME, j'ai fait ça comme ça: getClass().getResourceAsStream("/raw_resources.dat");
Mais dans Android, je suis toujours nul là-dessus, pourquoi?
InputStream raw = context.getAssets().open("filename.ext");
Reader is = new BufferedReader(new InputStreamReader(raw, "UTF8"));
Pour les fichiers bruts, vous devriez envisager de créer un dossier brut dans le répertoire res, puis appeler getResources().openRawResource(resourceName)
depuis votre activité.
Dans certaines situations, nous devons obtenir l'image à partir d'un dossier dessinable ou brut en utilisant le nom de l'image à la place si l'ID généré
// Image View Object
mIv = (ImageView) findViewById(R.id.xidIma);
// create context Object for to Fetch image from resourse
Context mContext=getApplicationContext();
// getResources().getIdentifier("image_name","res_folder_name", package_name);
// find out below example
int i = mContext.getResources().getIdentifier("ic_launcher","raw", mContext.getPackageName());
// now we will get contsant id for that image
mIv.setBackgroundResource(i);
Une approche avancée utilise Kotlin fonction d'extension
fun Context.getRawInput(@RawRes resourceId: Int): InputStream {
return resources.openRawResource(resourceId)
}
Une autre chose intéressante est la fonction d'extension utilise qui est définie dans la portée Closeable
Par exemple, vous pouvez travailler avec le flux d'entrée de manière élégante sans gérer les exceptions et la gestion de la mémoire
fun Context.readRaw(@RawRes resourceId: Int): String {
return resources.openRawResource(resourceId).bufferedReader(Charsets.UTF_8).use { it.readText() }
}
InputStream in = getResources (). OpenRawResource (resourceName);
Cela fonctionnera correctement. Avant cela, vous devez créer le fichier xml/fichier texte en ressource brute. Ensuite, il sera accessible.
Modifier
Parfois, com.andriod.R sera importé en cas d'erreur dans le fichier de mise en page ou les noms d'image. Vous devez donc importer le package correctement, alors seul le fichier brut sera accessible.
getClass().getResourcesAsStream()
fonctionne très bien sur Android. Assurez-vous simplement que le fichier que vous essayez d'ouvrir est correctement intégré dans votre APK (ouvrez l'APK en tant que Zip).
Normalement, sur Android vous placez ces fichiers dans le répertoire assets
. Donc, si vous mettez le raw_resources.dat
dans le sous-répertoire assets
de votre projet, il se retrouvera dans le répertoire assets
de l'APK et vous pourrez utiliser:
getClass().getResourcesAsStream("/assets/raw_resources.dat");
Il est également possible de personnaliser le processus de génération afin que le fichier ne se retrouve pas dans le répertoire assets
de l'APK.