Мне трудно понять, как записывать и читать файлы на устройстве 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 ... это, кажется, корень моей проблемы.