Запись и чтение из файла в Android - PullRequest
0 голосов
/ 27 июля 2011

Мне трудно понять, как записывать и читать файлы на устройстве Android.Файл будет отформатирован как XML, и у меня уже есть синтаксические анализаторы и структуры данных, которые могут форматировать XML в объекты и объекты в XML, но последнее препятствие - это чтение XML из файла, не являющегося ресурсом (я знаю, что структуры данных работают, потомуЯ это работает при чтении из файла ресурсов), а также запись в файл не из ресурсов.Я ужасно использую инструменты для отладки (не знаю, как напечатать трассировку стека), но я точно знаю, что проблема в том, что я не могу читать или писать в эти файлы.У меня нет опыта записи в файлы на Java, поэтому, может быть, я так плохо с этим работаю.

Код записи:

    File scoresFile = new File(getExternalFilesDir(null), "scores.xml");

    if (!scoresFile.exists())
    {
        scoresFile.createNewFile();
    }

    OutputStream os = new FileOutputStream(scoresFile);

    os.write(writer.toString().getBytes());
    os.flush();
    os.close();

Код чтения:

    XmlPullParserFactory xmlFac = XmlPullParserFactory.newInstance();
    XmlPullParser qXML = xmlFac.newPullParser();
    InputStream is = null;
    File scoresFile = new File(c.getExternalFilesDir(null), "scores.xml");

    if (!scoresFile.exists())
    {
        try {
            scoresFile.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    try {
        is = new FileInputStream(scoresFile);
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    if (is != null)
        qXML.setInput(is,null);
    else
        qXML = c.getResources().getXml(R.xml.scores);

ОБНОВЛЕНИЕ: Последнее предложение if в разделе чтения всегда оценивается как ложное.Итак, InputStream имеет значение null ... это, кажется, корень моей проблемы.

1 Ответ

2 голосов
/ 27 июля 2011

Я бы взглянул на эти две ссылки: Использование внутреннего хранилища и Использование внешнего хранилища

Обе ссылки на одну и ту же страницу, только разные части.На самом деле, это зависит от того, хотите ли вы сохранить этот файл в памяти устройства или на внешнем носителе (например, на SD-карте).

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