Windows如何区分复制文件和创建文件

时间:2015-10-08 13:21:00

标签: windows filesystems windows-server-2008-r2

我正在寻找有关Windows文件系统如何区分复制(从其他位置复制和粘贴)的文件与创建的文件(在文件夹中创建的新文件)之间的一些建议。

这方面的一些背景知识更有意义:我有一个用于移动文件的应用程序。应用程序将监视目录,当文件放在目录中时,它会将其移动到其他位置。但是,我遇到的问题是,应用程序不会获取在受监视目录中创建的文件,但会拾取已创建的文件,并将其复制到受监视目录中。

任何有关Windows如何区分或者根本不同的建议都将受到高度赞赏。

这是在Microsoft Windows Server 2008 R2 Standard上运行的。我不能深入研究代码,不幸地看到底层发生了什么,所以需要了解其中的差异。

2 个答案:

答案 0 :(得分:1)

文件系统不知道"复制"文件。任何复制都是文件打开/读/写/关闭操作的序列。这同样适用于移动到不同的文件系统。但是,在同一文件系统中移动是文件系统的本机操作,可以通过一个命令完成文件系统。

现在关于你的问题。很可能你抓住了文件的创建(在写入数据之前),当你的应用程序做出反应时,文件仍然被打开以便写入。所以你需要等到文件关闭。 根据您的监控方式,这种等待是以不同的方式完成的。在文件系统过滤器中,您等待文件关闭操作。使用.NET FileSystemWatcher无法跟踪文件关闭操作,但我在StackOverflow上看到了一些技巧(虽然没有链接,抱歉)。

答案 1 :(得分:0)

  • D:驱动器中存在的文件,来自创建

A file existing in D: drive, from creation

  • 复制到E:drive
  • 的同一文件

The same file which was copied to E: drive

正如您所看到的,复制到E:驱动器的文件创建时间最新,复制时间和修改时间作为该文件在上一个位置的最后修改时间。

所以我想这说明了Windows如何区分复制的文件和创建的文件。