外部 USB 设备上的 0Byte 文件未在 Android Galaxy Tab 10.1 上正确卸载时



我的应用程序使用三星适配器写入外部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

您需要

在关闭文件之前sync()文件。

  FileOutputStream fos=new FileOutputStream(someLikelyFileObject);
  BufferedOutputStream out=new BufferedOutputStream(fos);
  try {
    // write stuff to out
    out.flush();
  }
  finally {
    fos.getFD().sync();
    out.close();
  }

阅读这篇 Android 开发者博客文章,了解更多信息。

相关内容

  • 没有找到相关文章

最新更新