Я пытаюсь сохранить 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, поэтому любые советы приветствуются!
Файл был написан правильно, я проверил содержимое файла вручную через DDMS от Android. Однако проблема заключается в том, что файл не сохраняется при отключении эмулятора. После выключения питания файл будет пустым. Может ли это быть причиной? – mrQWERTY
Метод getStringFromDoc не читает, а пишет ... поэтому он никогда ничего не вернет. Поменяйте, чтобы читать и видеть, что это дает вам. – RiddlerDev
Если вы действительно правильно читаете до того, как эмулятор остановлен, проверьте свои настройки на то, что эмулятор не настроен на сброс данных пользователя при каждой загрузке. – RiddlerDev