Запись в ресурс текстового файла в Android

Кто-нибудь знает, как писать в текстовый файл на Android, используя такой ресурс, как:

R.raw.my_text_file

Я просто ищу что-то чистое и простое. Я гуглил, но примеры, которые я нашел, не работали. Я пытался кодировать, используя документы Android, но не мог обдумать это...

Спасибо

ИЗМЕНИТЬ:

Я использовал документы Android для создания этого кода. Журналы выводят «1» и «9», а код пропускает все между ними и ничего не делает:

    try {
        String filename = "res/raw/my_text_file.txt";
        String string;

        Log.v(TAG, "1");
        FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
        Log.v(TAG, "2");

        for (int i = 0; i < list.size(); i++) {
            Log.v(TAG, "3");
            try {
                Log.v(TAG, "4");
                string = i + " - " + list.get(i);
                fos.write(string.getBytes());
            } catch (Exception e) {
                Log.v(TAG, "5");
            }
            Log.v(TAG, "6");
        }
        Log.v(TAG, "7");
        fos.close();
        Log.v(TAG, "8");
    } catch (Exception e) {

    }
    Log.v(TAG, "9");

person ThreaT    schedule 04.05.2012    source источник


Ответы (2)


Кто-нибудь знает, как писать в текстовый файл на Android, используя ресурс

Ресурсы доступны только для чтения во время выполнения и не могут быть записаны.

person CommonsWare    schedule 04.05.2012
comment
В таком случае, сработает ли это, если я запишу текстовый файл обычным способом Java? - person ThreaT; 05.05.2012
comment
@ThreaT: Вы, безусловно, можете использовать стандартный ввод-вывод Java для записи во внутреннюю или внешнюю память. developer.android.com/guide/topics/data/data-storage. html - person CommonsWare; 05.05.2012
comment
Кроме того, как я могу получить путь к файлу ресурса? - person ThreaT; 05.05.2012
comment
@ThreaT: пути к файлу ресурса нет. Ресурс не является файлом во время выполнения. - person CommonsWare; 05.05.2012
comment
О... хорошо, я обновил свой код выше, есть идеи, почему он не записывает в файл? - person ThreaT; 05.05.2012
comment
@ThreaT: Потому что openFileOutput() не работает с путем. Это должно быть простое имя файла — без косых черт. Вы бы знали об этом, если бы сделали что-то с возникшим исключением (например, использовали Log.e(), чтобы зарегистрировать его в LogCat), а не проигнорировали его. - person CommonsWare; 05.05.2012
comment
Если я изменю его на: String filename = hello_file.txt; тогда он создаст этот файл перед записью в него? Если да, то где он будет его создавать? - person ThreaT; 05.05.2012
comment
@ThreaT: он создаст файл на телефоне. Вы не сможете получить доступ к файлу на рабочем оборудовании, кроме как через ваше приложение (например, openFileInput(). В эмуляторе вы сможете увидеть файл в /data/data/your.package.goes.here/files/, где your.package.goes.here заменяется любым package в вашем элементе <manifest> в ваш AndroidManifest.xml файл. - person CommonsWare; 05.05.2012
comment
Я понимаю. Итак: String имя файла = hello_file.txt; - создаст hello_file.txt в com.my.package/files на эмуляторе или мобильном устройстве, на котором в данный момент запущено приложение? - person ThreaT; 05.05.2012

Как сказал @CommonsWare, вы не можете писать на ресурсы, но вы можете использовать внутреннее хранилище, используя openFileOutput и openFileInput и BufferedReaders и BufferedWriters. Вы можете проверить это здесь:

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

Но вот образец:

BufferedReader BR_intFile = новый BufferedReader (новый InputStreamReader (openFileInput («файл»)));

Читать и подобный код писать.

person Moises Jimenez    schedule 04.05.2012
comment
Спасибо. Я прочитала, а написать не могу. Я вставил свой код в раздел EDIT в своем вопросе выше. - person ThreaT; 05.05.2012
comment
Попробуйте сохранить файл в другом месте, кроме res/raw. - person Moises Jimenez; 05.05.2012
comment
Хорошо, когда я это сделал: String filename = hello_file; затем он проходит и регистрирует все числа и запускает весь код, но файл hello_file нигде в моем рабочем пространстве не существует, поэтому я не думаю, что он его создал. Я тоже должен его создать? Если да, то знаете как? - person ThreaT; 05.05.2012
comment
Если вы хотите проверить его содержимое, прочитайте его из приложения, поскольку я считаю, что файл является частным для приложения, и вы не можете получить к нему доступ из него. - person Moises Jimenez; 05.05.2012
comment
Разве нет способа записать в файл, который находится вне приложения? - person ThreaT; 05.05.2012
comment
Вам придется использовать внешнее хранилище. Проверка доступности носителя и так далее. Проверьте это здесь developer.android.com/guide/topics/ данные/ - person Moises Jimenez; 05.05.2012
comment
@ThreaT: не существует нигде в моем рабочем пространстве — вы пишете файл на телефоне. Этот телефон может находиться за тысячи километров от вашего текущего местоположения; он, безусловно, не имеет доступа к вашему рабочему пространству. - person CommonsWare; 05.05.2012