我正在尝试构建一个应用程序,将我的计算机上的文件与我的网络服务器上的文件同步。在我目前的情况下,我的应用程序会监视一系列包含要同步的文件的路径。此解决方案的问题是,当我在本地重命名文件时,它不再匹配任何路径并作为新文件上传,而不是覆盖旧文件。我想要做的是在文件中添加一个像 documentID 这样的属性,这样无论文件名是什么我都可以检查它。
谁能指出我正确的方向?
我正在尝试构建一个应用程序,将我的计算机上的文件与我的网络服务器上的文件同步。在我目前的情况下,我的应用程序会监视一系列包含要同步的文件的路径。此解决方案的问题是,当我在本地重命名文件时,它不再匹配任何路径并作为新文件上传,而不是覆盖旧文件。我想要做的是在文件中添加一个像 documentID 这样的属性,这样无论文件名是什么我都可以检查它。
谁能指出我正确的方向?
你不能。您正在寻找的是将元数据添加到文件中。这就是为什么像 Perforce 这样的修订软件首先存在的原因。这种软件跟踪仓库内的所有文件,并记录所有文件的更改、重命名、删除和创建。但即使 Perforce 也有其局限性,因为它无法更改文件之间的链接。
如果您想要一个完整的解决方案,BigFile 是完美文件跟踪的答案。但此时,您不在 Windows 支持范围内。大多数视频游戏公司都使用 BigFile 的概念,因为它允许通过 ID 而不是名称来跟踪内部存在的每个文件。所有的文件都被称为 ID 和路径只是为了方便用户。一个文件通过其 ID 引用另一个文件,仅此而已。
在我参与的一个大型项目中,我们将 BigFile 与 Perforce 集成在顶部,作为修订历史记录。BigFile 将序列化一个“外部”文件并将其提供给 Perforce 以获取历史记录。当我们获得最新版本时,BigFile 会向 Perforce 询问所有最新版本并将它们重新集成到内部。
但如果你只做 Office 文件,Perforce、Alienbrain、CVS 或 Subversion 都是可以解决你问题的软件。