Je travaille sur une application dans laquelle je dois mettre à jour certains fichiers présents dans le dossier d'exécution du dossier assets/raw depuis un emplacement http.
Quelqu'un peut-il m'aider à partager ma façon d'écrire des fichiers dans des actifs ou des dossiers bruts?
Cela ne peut pas être fait. C'est impossible.
Pourquoi ne pas mettre à jour les fichiers sur le système de fichiers local? Vous pouvez lire/écrire des fichiers dans la zone en bac à sable de vos applications.
http://developer.Android.com/guide/topics/data/data-storage.html#filesInternal
Vous pouvez également envisager d'autres solutions, telles que les préférences partagées et l'utilisation de fichiers de cache (toutes décrites dans le lien ci-dessus).
Vous ne pouvez pas écrire de données dans le dossier asset/Raw, car elles sont compressées (.apk) et ne peuvent pas être étendues.
Si votre application doit télécharger des fichiers de dépendance à partir du serveur, vous pouvez utiliser les fichiers d'extension APK fournis par Android ( http://developer.Android.com/guide/market/expansion-files.html ).
Une autre approche pour le même problème peut vous aider Lisez et écrivez le fichier dans le contexte privé de l'application.
String NOTE = "note.txt";
private void writeToFile() {
try {
OutputStreamWriter out = new OutputStreamWriter(openFileOutput(
NOTES, 0));
out.write("testing");
out.close();
}
catch (Throwable t) {
Toast.makeText(this, "Exception: " + t.toString(), 2000).show();
}
}
private void ReadFromFile()
{
try {
InputStream in = openFileInput(NOTES);
if (in != null) {
InputStreamReader tmp = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(tmp);
String str;
StringBuffer buf = new StringBuffer();
while ((str = reader.readLine()) != null) {
buf.append(str + "\n");
}
in.close();
String temp = "Not Working";
temp = buf.toString();
Toast.makeText(this, temp, Toast.LENGTH_SHORT).show();
}
} catch (Java.io.FileNotFoundException e) {
// that's OK, we probably haven't created it yet
} catch (Throwable t) {
Toast.makeText(this, "Exception: " + t.toString(), 2000).show();
}
}
Vous ne pouvez pas écrire de fichier JSON lorsque vous êtes dans des actifs. comme décrit précédemment, les ressources sont en lecture seule. Mais vous pouvez copier des actifs (fichier json/tout autre élément des actifs) sur le stockage local du mobile, puis les éditer (écriture/lecture) à partir du stockage local. Plus d'options de stockage telles que Préférence partagée (pour les petites données) et Base de données sqlite (pour les grandes données) sont disponibles.