在安卓写完文件后断电,或者写完一定时间后断电。重启后发现数据未写入。
无论是流写入还是SharedPreferences等写入。
后来了解到Linux的写文件时先将文件写入把磁盘缓冲,等空闲是写入磁盘。但是可以通过sync命令强制写入,那么就可以解决这个问题了,只需加入一下代码
//linux sync强制写入,以防止断电(linux写文件非及时)
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec("sync");
} catch (IOException e) {
e.printStackTrace();
}
或者
FileOutputStream fos = new FileOutputStream("/sdcard/test.txt");
fos.write(buf);
fos.flush();
FileDescriptor fd = fos.getFD();
fd.sync();
解决Android断电数据丢失
本文探讨了在Android设备上因断电导致的数据丢失问题,特别是在写入文件操作时。文章详细介绍了Linux系统中文件写入机制,即先写入缓存再同步到磁盘的过程。为了解决这一问题,提供了两种解决方案:一是使用Runtime.exec(sync)强制同步磁盘缓存;二是通过FileOutputStream的fd.sync()方法实现文件描述符级别的同步。
3934

被折叠的 条评论
为什么被折叠?



