【问题标题】:Simultaneous files access via App and USB通过 App 和 USB 同时访问文件
【发布时间】:2014-03-15 16:05:16
【问题描述】:

假设我有一个(库存)android 4.x 平板电脑通过 USB 连接到微控制器板。 该板能够将 SD 卡作为 USB 大容量存储器访问并读取/写入文件 卡上。 现在平板电脑上应该有一个应用程序,它可以像板一样读取/写入相同的文件。 因此,开发板和应用程序可以同时读取/写入文件。

为了避免不一致的数据等。当应用程序读取/写入文件时,我会使用独占的FileLock。 现在我的问题是,如果 FileLock“足够低级”也可以在这种情况下工作并防止数据不一致?

谢谢

【问题讨论】:

    标签: java android usb file-access filelock


    【解决方案1】:

    虽然使用FileLock 可确保两个应用程序无法同时写入文件,但应用程序逻辑可能会阻止该方案。您仍然必须正确编码。特别是,如果一个应用程序读取文件,进行更改,然后“等待”获取文件锁定以写入文件 - 那么它可能会将“旧”信息写回文件。

    【讨论】:

    • thx,我假设 FileLock 的编码和使用将正确完成。问题是,FileLock 机制是否会知道通过 USB/微控制器板访问文件?换句话说:如果文件是通过 USB 连接设备并行访问的,FileLock 没用吗?
    【解决方案2】:

    FileLock 的文档中找到了这个:

    锁旨在成为真正的平台操作系统文件锁,因此虚拟机持有的锁将对其他操作系统进程可见。

    我猜想通过 USB 访问 SDCard 是由某些操作系统的进程控制的,所以微控制器也应该可以看到锁。

    【讨论】:

    • 是的,也读过这篇文章,但不太相信 android usb 驱动程序是否可以绕过 FileLock 机制并将数据从 USB 写入/读取到文件,尽管我的应用程序持有 FileLock。大概有安卓操作系统专家可以打消这个疑虑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多