在安卓写完文件后断电,或者写完一定时间后断电。重启后发现数据未写入。
无论是流写入还是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();