【问题标题】:libaums - can a file copied to or from USB drive be corrupt if drive not unmounted?libaums - 如果驱动器未卸载,复制到 USB 驱动器或从 USB 驱动器复制的文件是否会损坏?
【发布时间】:2018-08-27 10:17:45
【问题描述】:

标题就是问题。我正在使用 libaums 使用 BufferedInput/OutputStream 双向传输文件,最后调用 close() 。然后我将关闭 UsbMassStorageDevice 并退出应用程序。

但是,在“设置”->“存储”中,我看到 USB OTG 存储保持挂载状态。它只能在“设置”中的弹出窗口中卸载。似乎没有合法的 Android API 可以从代码中卸载 USB 驱动器。

因为我正在构建一个最小的 UI/最小交互应用程序,所以这是一个很大的麻烦。但是,我在没有明确卸载的情况下多次拔掉了记忆棒,并且复制的文件始终有效(使用 diff 进行检查)。

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

【问题讨论】:

    标签: usb storage unmount


    【解决方案1】:

    好问题! 你应该没问题,因为 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

    【讨论】:

    • 谢谢!那么,让您想知道 Android USB OTG 安装/卸载的真正作用。也许这只是管理,向其他应用发出有关 USB 驱动器访问状态的信号。
    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2023-01-07
    相关资源
    最近更新 更多