Как записать файлы в папку активов или необработанную папку в Android? - PullRequest
64 голосов
/ 21 сентября 2010

Я работаю над некоторым приложением, в котором мне нужно обновить некоторые файлы, присутствующие во время выполнения папки assets / raw, из какого-то http-местоположения.

Может ли кто-нибудь мне помочь, поделившись записью файлов в ресурсах или папке raw

Ответы [ 5 ]

130 голосов
/ 21 сентября 2010

Это невозможно сделать.Это невозможно.

14 голосов
/ 30 апреля 2011

Почему бы не обновить файлы в локальной файловой системе? Вы можете читать / записывать файлы в изолированную область своих приложений.

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

Другие альтернативы, которые вы, возможно, захотите рассмотреть, - Shared Perferences и использование Cache Files (все описано по ссылке выше)

11 голосов
/ 09 марта 2012

Нельзя записывать данные в папку asset / Raw , поскольку она упакована ( .apk ) и не может быть расширена по размеру.

Если вашему приложению необходимо загрузить файлы зависимостей с сервера, вы можете перейти к файлам расширения APK, предоставляемым android (http://developer.android.com/guide/market/expansion-files.html).

1 голос
/ 11 февраля 2014

Другой подход к решению той же проблемы может помочь вам прочитать и написать файл в частном контексте приложения

                 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();
    }
}
0 голосов
/ 20 февраля 2018

Вы не можете записать JSON-файл, находясь в активах. как уже описанные активы доступны только для чтения. Но вы можете скопировать ресурсы (файл json / что-либо еще в ресурсах) в локальное хранилище мобильного устройства, а затем отредактировать (записать / прочитать) из локального хранилища. Доступны дополнительные параметры хранения, такие как общие предпочтения (для небольших данных) и база данных sqlite (для больших данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...