2014-12-03 5 views
0

Я пытаюсь сохранить 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, поэтому любые советы приветствуются!

ответ

1

Вы используете StringWriter на прочитанной части, если я правильно понимаю ваш код. Думаю, вам нужен StringReader.

Если это не то, что вы пытаетесь сделать там (прочитайте), я могу смотреть дальше, это было именно то, что привлекло мое внимание.

+0

Файл был написан правильно, я проверил содержимое файла вручную через DDMS от Android. Однако проблема заключается в том, что файл не сохраняется при отключении эмулятора. После выключения питания файл будет пустым. Может ли это быть причиной? – mrQWERTY

+0

Метод getStringFromDoc не читает, а пишет ... поэтому он никогда ничего не вернет. Поменяйте, чтобы читать и видеть, что это дает вам. – RiddlerDev

+0

Если вы действительно правильно читаете до того, как эмулятор остановлен, проверьте свои настройки на то, что эмулятор не настроен на сброс данных пользователя при каждой загрузке. – RiddlerDev

Смежные вопросы