web-dev-qa-db-fra.com

Comment écrire des fichiers dans un dossier d'actifs ou un dossier brut sous Android?

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?

63
dwarkesh

Cela ne peut pas être fait. C'est impossible.

126
Aaron Saunders

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).

13
jing

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 ).

10
Suryavel TR

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();
    }
}
1
Vikrant

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.

0
Ahsan Idrees