我正在尝试将xml文件保存到Android的内部存储中。但是,该文件不会被保留。每次重新启动模拟器时,文件都将为空。当我手动选择在应用程序中写入内容时,该文件只会写入内容。然后,如果我关闭应用程序或其他任何内容,文件内容将被保留。但是,当我关闭模拟器时,文件将在那里,但是为空。
因此,我不确定我是否正确保存它。
请查看我的代码,可能是它有问题或者我的Android模拟器有些设置。
public static void store(Context c, String filename, int width, int height, int rooms, int expected_partiters, BSPNode root, Cells cells, int[][] dists, int startX, int startY)
{
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
// root elements
storeMaze(width, height, rooms, expected_partiters, root, cells, dists, startX, startY, doc);
String serializedDoc = MazeFileWriter.getStringFromDoc(doc);
try {
FileOutputStream fos = c.openFileOutput("data_test.xml", Context.MODE_PRIVATE);
fos.write(serializedDoc.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
}
}
static String getStringFromDoc(org.w3c.dom.Document doc) {
try
{
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
writer.flush();
return writer.toString();
}
catch(TransformerException ex)
{
ex.printStackTrace();
return null;
}
}
我是Android的初学者,所以感谢任何建议!
答案 0 :(得分:1)
如果我正确理解您的代码,您在读取部分上使用StringWriter。我想你想要一个StringReader。
如果那不是你想要做的那些(阅读),我可以进一步观察,这正是引起我注意的。