用OutputStream写入Sd上的文件,写完后会有打印提示,如果立即把机器断电,再打开被写入的文件,发现成了0字节。一直怀疑是写在缓存,没同步到磁盘,于是在write()后加了个flush(),结果还是0字节。是因OutputStream是字节流,其写入操作不会用到缓存:
所以flush根本没用。但OutputStream又找不到一个类似linux中的sync()方法,所幸在论坛找到一同样问题的帖子,终于找到解决方法:
用OutputStream的子类FileOutputStream打开文件,FileOutputStream中就有同步的方法:FileOutputStream.getFD().sync(),在write()后执行就不会出现文件清0的问题了。