将特定的非侵入性信息附加到文件或文件夹以保持与程序的连接

问题描述

这将是一个有很多假设的问题,但我已经考虑了一段时间,我终于想就如何解决这个“问题”获得一些看法。为了回答这个问题,我将编写一个示例要求,说明我想要制作的程序如何在概念层面上工作,而不需要太多细节。

问题

我想创建一个程序来跟踪文件文件夹的杂项信息。这些杂项信息可以是任何内容,从评论、作者到更具体的信息,如文件的原始来源(例如 URL)、类别、标签等。所有这些信息都保存在 sqlite 数据库中。

现在...您将如何创建文件(或文件夹)到数据库的连接?无论向程序中添加什么文件,该文件都应继续在独立于程序的级别上运行,这意味着您应该能够编辑、复制、移动、重命名文件或对其执行任何其他操作,而这些文件通常会在您的操作系统中执行。选择 - 甚至删除它。

您甚至应该能够对其进行存档、压缩、上传到某处或执行其他操作来临时或永久地从您的系统中删除文件,而不会丢失数据库的连接。程序本身实际上并没有触及文件本身,除非在数据库生成一个新条目,但显然,文件中应该有某种对程序中数据库条目的引用。

是的,我知道如果删除文件数据库中将有一个死条目。目前,请将其视为无法解决的不幸现实,除非您将文件更紧密地合并到程序中。

可能的解决方案以及我决定反对它们的原因

文件名内的引用

可能是最明显的选择,您可以只在文件名中引用一个指向数据库条目的引用,例如在文件名的开头包含 id:

  • #1 my-example-file.txt
  • #12814 this-is-of-many-files.txt

显然,这与我之前建立的内容背道而驰,因为您将被限制自由重命名文件。您必须始终牢记不要弄乱文件名中的 id,否则与您的程序的连接会中断。不幸的是,这是我目前最好的选择,但我想尽可能避免使用这种方法

备用数据流 (ADS)

我最近发现 NTFS 文件系统上有一个非常酷的功能,ADS 允许您为文件存储不同的数据流,从而大大简化它。您可以将数据流附加到您的文件中,以保存程序中数据库条目的 id,而普通用户永远无法直接使用它。

但是,由于这是为特定文件系统保留的功能,因此 ADS 存在一些丑陋的副作用,因为您可以通过以下方式轻松丢失该部分文件

  • 将其移动/复制到不支持 ADS 的文件系统,例如可移动驱动器中最常用的文件系统
  • 上传到云端,然后再下载
  • 将其移动到另一个可能不支持 ADS 或以意外方式处理它的操作系统
  • 压缩它

因此我也不能真正依赖 ADS。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...