我很难弄清楚如何在 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 子句始终评估为 false。所以, InputStream 是空的......这似乎是我问题的根源。