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);
更新: read セクションの最後の if 句は、常に false と評価されます。したがって、 InputStream は null です...これが私の問題の原因のようです。