Android и ObjectOutputStream в файл ресурсов - PullRequest
1 голос
/ 05 января 2012

Я действительно новичок в разработке для Android, и мой первый проект был простой игрой, в которой есть дисплей и логическая часть.Я хотел бы добавить функцию сохранения в игру, но у меня возникли проблемы с реализацией.

Я хотел бы сделать это таким образом, с ObjectOutputStream (только важная часть включена)

String filename = "res/raw/testfile.txt";
try
{
    FileOutputStream fileout = new FileOutputStream(filename);
    ObjectOutputStream out = new ObjectOutputStream(fileout);
    out.writeObject(...logic objects...);
} 
catch (Exception ex)
{
    //show the error message
}

Но я всегда получаю сообщение об ошибке, в котором говорится, что "нет такого файла ...".Даже если я создаю "testfile.txt" в директории raw, он говорит о той же ошибке.

Пожалуйста, помогите мне, что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 05 января 2012

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

2 голосов
/ 05 января 2012

Создайте объект File с именем файла, затем проверьте, существует ли файл.Если это не так, то создайте файл.Если это так, вы можете просто перезаписать или предложить пользователю, если он хочет перезаписать его.Затем передайте объект File в свой FileOutputStream вместо имени файла.Примерно так:

String filename = "res/raw/testfile.txt";
try
{
    File file = new File(filename);
    if (!file.exists()) {
        if (!file.createNewFile()) {
           throw new IOException("Unable to create file");
        }
    // else { //prompt user to confirm overwrite }

    FileOutputStream fileout = new FileOutputStream(file);
    ObjectOutputStream out = new ObjectOutputStream(fileout);
    out.writeObject(...logic objects...);
} 
catch (Exception ex)
{
    //show the error message
}

Также убедитесь, что вы закрыли свои выходные потоки, чтобы предотвратить любые утечки ресурсов.

Наслаждайтесь!

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