首页 > 解决方案 > 如何检查文件是否已复制到输出目录,因为它比以前更新?

问题描述

我有设置过程,将数据持久化到我的数据库中,数据由使用 json 反序列化器成为对象的小 json 组成,然后将该对象持久化到数据库中。我的问题是在运行时将所有数据持久化到数据库中需要时间,而且通常我只需要在文件已更改或已添加某些内容的情况下执行此操作。

我知道将新文件复制到输出目录时就是这种情况,因为如果文件较新,则要复制 json 文件的文件设置。

但是我如何在我的应用程序中使用它,目前我只是清除我的数据库,并重新插入所有内容,但由于大多数数据都是陈旧的(意味着它几个月没有改变)我不需要重新插入它们,但只有那些有改变了。

那么如何检查我的应用程序的输出目录中哪些文件已被更改/覆盖?

项目设置状态,如果我的文件较新,我的文件将被复制到输出目录,但是我如何从我的应用程序中检测文件是否较新?

我必须使用输出目录来检查文件是否已更改。

标签: c#

解决方案


您不能使用输出目录文件的覆盖时间作为唯一信息来检测是否应该同步更改。输出内容是在构建和发布操作时创建的,因此如果文件被覆盖,它会在这些点完成,而不是在您运行应用程序时完成。您可以多次构建和发布您的应用程序而无需运行它,问题是:文件何时被覆盖?

之后,您可以多次运行和停止您的应用程序,问题是:您的文件是否被覆盖并与数据库同步?

您可以:(1) 使用散列或 (2) 实现文件版本控制机制(File.GetLastWriteTime (path) 并在同步数据后将其记录到数据库)或 (3) 实现明确表示您要同步这些文件的机制(同步后将重置的一些配置标志或将在同步后删除的已编辑文件的副本)


推荐阅读