我的应用程序使用 Galaxy 选项卡的三星适配器写入外部 SD 卡。当 USB 设备被“安全移除”时,文件都是好的,但是当设备被不安全地移除时,所有新写入的文件都是 0 字节。
这是代码的精简版本:
String json = "{some data to export}";
String folderPath = Environment.getExternalStorageDirectory().toString() + File.separator + "Storages" + File.separator + "usb" + File.separator + "sda";
File outputFile = new File(folderPath, "export.txt");
FileWriter writer = new FileWriter(outputFile);
BufferedWriter out = new BufferedWriter(writer);
out.write(json);
out.flush();
out.close();
如您所见,我正在刷新和关闭文件,但是在我看来,Android 在卸载 USB 之前实际上并没有费心刷新内容。
显而易见的解决方案是告诉用户安全卸载,但是我们都知道用户是什么样的。那么有没有办法强制Android以编程方式将文件内容刷新到sd卡?(除了 BufferedWriter.flush / BufferedWriter.close)
该设备是运行 Android 3.1 的三星 Galaxy Tab 10.1 GT-P7510