作者freedls (only B'z)
看板AndroidDev
标题[问题] Android 写档案的问题
时间Mon Jul 13 17:20:46 2015
Code 片段如下:
1. File file = new File(filePath);
2. String xmlString = XMLFileManager.instance.updateLockFileXml(file,value);
3. FileOutputStream fop = new FileOutputStream(file);
4. if(xmlString!=null && !xmlString.equals(""))
5. {
6. byte[] contentInBytes = xmlString.getBytes();
7. fop.write(contentInBytes);
8. fop.flush();
9. fop.close();
10. }
小弟目前遇到一个写xml档中断的问题,
如果将中断点设定在第4行,
也就是当程式进行到将file内的资讯喂给FileOutputStream後,
此时将装置强制关机或断电,
则下次重开机後,filePath那个档案的内容会变成空的,
请问是否有什麽机制可以避免在FileOutputStream尚未close之前断电,
而原本档案内容可以保持不变?
会需要避免这样的情况发生是因为,
目前功能需求需要纪录某些资讯,而这些资讯在APP移除後必须还存在,
因此才会用写档案的方式记录,
而断电或关机则是测试时须考量到万一停电时的状况,
目前就是被测试出来程式在执行时断电,会有很高的机率让原本的档案内容变空的,
请各路高手求解... <(_ _)>
感谢感谢。
--
脸上总是挂着明朗笑容的人,往往最是寂寞。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 113.196.176.124
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1436779251.A.30B.html
1F:→ ssccg: 如果目标是不要盖掉原本的档案,就先写到另一个档案 07/13 17:28
2F:→ ssccg: 成功之後再改档名 07/13 17:28
谢谢你的回应,这方法当初也有想过,
比较好奇的是,为什麽用SharedPreferences储存时断电就不会遇到这样的状况,
但无奈SharedPreferences在APP移除後会清掉,不符合需求
明明同样也都是写xml档案...
是我遗漏了什麽吗,还是我的File写档的方式有误?
※ 编辑: freedls (113.196.176.124), 07/13/2015 18:15:55
3F:→ ssccg: 那你可以去看SharedPreferences的写档方式 07/13 18:29
4F:→ ssccg: 流程是先把原本档案改名当备份,然後才写新档,失败就复原 07/13 18:31