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的初學者,所以有任何建議表示讚賞!
該文件被正確寫入,我通過Android的DDMS手動檢查了文件內容。但是,問題是當我關閉仿真器時文件沒有保存。斷電後,文件將爲空。這可能是原因嗎? – mrQWERTY 2014-12-03 02:58:06
getStringFromDoc方法不能讀取,但正在寫...所以它永遠不會返回任何東西。交換閱讀,看看它給你什麼。 – RiddlerDev 2014-12-03 03:01:46
如果您在仿真器停止之前實際正確讀取,請檢查您的設置,即仿真器未設置爲重置每個負載上的用戶數據。 – RiddlerDev 2014-12-03 03:02:51