libaums - 如果未卸载驱动器,是否可以将复制到USB驱动器或从USB驱动器复制的文件损坏?

时间:2018-03-18 21:37:27

标签: usb storage unmount

标题是问题。我正在使用libaums使用BufferedInput / OutputStream以两种方式传输文件,最后调用close()。然后我关闭UsbMassStorageDevice并退出应用程序。

但是,在Settings-> Storage中,我看到USB OTG存储仍然安装。它只能在“设置”中的弹出窗口中卸载。似乎没有合法的Android API来从代码中卸载USB驱动器。

由于我正在构建一个最小的UI /最小交互应用程序,这是一个主要的麻烦。但是,在没有明确卸载的情况下,我已经拔掉了很多次,并且复制的文件总是有效的(使用diff来检查)。

那么 - 复制文件并使用libaums调用close可以保证文件的完整传输吗?或者是否存在一些不能强制刷新的底层操作系统内存缓冲区,因此在不卸载的情况下拔出驱动器会导致文件损坏?

1 个答案:

答案 0 :(得分:2)

好的问题! 你应该没问题,因为USB通信总是得到承认。这意味着如果你的关闭回叫没有例外,那么可以保证USB驱动器得到的数据以“Ok”回复给主机。您可以看到代码[1]的特定部分,我正在检查驱动器的成功答案。

[1] https://github.com/magnusja/libaums/blob/develop/libaums/src/main/java/com/github/mjdev/libaums/driver/scsi/ScsiBlockDevice.java#L175-L191