gpt4 book ai didi

android - 在文件系统中处理文件的奇怪问题

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:46 26 4
gpt4 key购买 nike

我需要构建一个 android 应用程序来处理 /sdcard 目录中的文件。对于每个文件,我想提供标记文件等功能。我相信使用本地数据库来处理这个问题。

问题是,如果用户重命名文件,我会丢失标签,因为它们与以前的文件名相关。

有没有办法避免这个问题,比如为文件设置/获取一个即使重命名也不会改变的唯一标识符?

最佳答案

您需要的是数据库中每个文件的唯一 ID,并将所有标签链接到该 ID 而不是文件名(它可以根据您的喜好生成,一个整数或一个哈希或随机数都可以,重要的是没有其他文件具有相同的 ID,否则两个文件的标签都会显示)。

在您的数据库中,您可以保留一张表,将文件名链接到 ID(或者更灵活地,将 ID 链接到文件路径,并在需要时从中提取名称)。添加标签时,将其链接到该 ID,就像链接文件名一样。当您加载文件的标签时,它会花费您一次简单的 ID 数据库查找,但允许您在一个地方重命名您的文件(而不是必须遍历数据库来查找文件名)。

要发现有人重命名您的文件,您可以创建一个 FileObserver观看MOVE_SELF事件(这将是重命名 - 重命名与移动相同)。您可以覆盖 FileObserver.onEvent()方法,您可以在其中使用文件的新名称更新数据库。您需要在单独的线程中执行此操作,以避免锁定 UI。它也不会在您的 Activity 结束后持续存在,因此您可能希望有一个服务来保存 FileObserver 并更新您的数据库,或者只是在您的 Activity 启动时进行某种扫描。

关于android - 在文件系统中处理文件的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com