代码之家  ›  专栏  ›  技术社区  ›  Anthony Atmaram

如果在.NET中更新,则覆盖文件

  •  1
  • Anthony Atmaram  · 技术社区  · 14 年前

    FileInfo sourceFile = new FileInfo(source + "\\" + fileName);
    if(sourceFile.Exists) {
        FileInfo destFile = new FileInfo(destination + "\\" + fileName);
        if (destFile.Exists && destFile.LastWriteTime >= sourceFile.LastWriteTime)
        {
            //Using log4net
            log.Info("Current " + fileName + " is newer than the one on the server.");
            return false;
        }
    }
    

    查看日志,似乎有时 LastWriteTime 未检测到源文件的更新版本(更新时发生事件)。我是否有可能把写时间和修改时间搞混了?有人知道如何做到这一点吗?

    编辑(并复制我的评论): 我复制的文件大部分是我控制的DLL文件。它们是应用程序“growlforwindows”的程序集;它们定义自定义显示。我的应用程序的目的是检查网络共享以查看是否有更新的版本可用,并在需要时在本地复制该版本。这样,我们可以帮助确保所有客户使用最新的显示器。

    好吧,我在加载程序集时遇到了另一个问题。似乎您不能两次加载同一个文件,即使它们来自不同的位置,当它们通过 Assembly.ReflectionOnlyLoadFrom .

    2 回复  |  直到 11 年前
        1
  •  1
  •   Will A    14 年前

    这个 docs for LastWriteTime Refresh 方法-虽然上面的代码几乎肯定不需要调用它,但是如果您正在创建FileInfo对象并将其保留任意时间,这可能是适用的。

        2
  •  1
  •   Andy West    14 年前

    根据 MSDN

    此方法可能返回不准确的 值,因为它使用本机 值不能为空的函数 操作系统不断更新 系统。

    如果可能,我会尝试以下方法之一:

    • 在文件名中嵌入日期
    • 在文件中存储文件版本或日期

    这样你就不用担心 LastWriteTime

    推荐文章