2012-10-19 71 views
3

我正在尝试构建一个应用程序,用于将我的计算机上的文件与我的web服务器上的文件同步。在我目前的情况下,我的应用程序观看一系列包含要同步的文件的路径。这个解决方案的问题是,当我在本地重命名一个文件时,它不再匹配任何路径,而是作为新文件上传,而不是覆盖旧文件。我想要做的是将一个像documentID这样的属性添加到文件中,所以无论文件名是什么,都可以检查它。使用c向文件添加属性#

任何人都可以指向正确的方向吗?

+1

hm。如果该文件被复制,该属性应该如何表现?记住例如Microsoft Word删除旧文件并在您点击“保存”时创建一个新文件,因此任何属性都将丢失。 – Vlad

+0

@Vlad是这样吗?这真是一种耻辱和破坏者,因为大部分文件都是办公文件。 – chriskievit

+0

好吧,Office将此作为一项安全功能:如果由于某种原因保存失败,他们不想丢失原始文件。因此,他们以某个临时名称保存文件,并且当保存成功完成时,删除原始文件并重命名新文件。 – Vlad

回答

1

你不能。你正在寻找的是将元数据添加到文件。这就是为什么像Perforce这样的修订软件首先存在的原因。这种软件跟踪仓库内的所有文件,并记录所有更改,重命名,删除和创建文件。但即使Perforce也有其限制,因为它不能更改文件之间的链接。

如果您想要一个完整的解决方案,BigFile是完美文件跟踪的答案。但是在这一点上,你不在Windows支持之列。大多数电子游戏公司都使用BigFile的概念,因为它允许每个存在于里面的文件通过ID而不是名称进行跟踪。所有的文件都被称为ID和路径只是用户的便利。一个文件通过它的ID引用另一个文件,除此之外没有别的。

在我参与的一个大型项目中,我们在顶层与Perforce进行了BigFile集成,以充当修订历史记录。 BigFile将序列化一个“外部”文件并将其提供给Perforce以获取历史记录。当我们获得最新版本时,BigFile会向Perforce请求所有最新版本,并将其重新整合到内部。

但是,如果你只做Office文件,Perforce,Alienbrain,CVS或Subversion都可以解决你的问题。

+0

感谢您的答案和替代品。我会研究这些! – chriskievit

+0

刚刚添加了专门用于修订控制的软件集合。你也可以阅读:http://en.wikipedia.org/wiki/Revision_control – LightStriker