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

Windows如何区分复制的文件和创建的文件,windows,filesystems,windows-server-2008-r2,Windows,Filesystems,Windows Server 2008 R2,我想了解一下Windows文件系统如何区分复制的文件(从其他位置复制和粘贴)和创建的文件(在文件夹中创建的新文件) 有一点背景知识,所以它更有意义:我有一个用于移动文件的应用程序。应用程序将监视一个目录,当一个文件被放置在该目录中时,它将把它移到别处。但是,我遇到的问题是,应用程序不会拾取在受监视目录中创建的文件,而是拾取在其他位置创建的文件,并将其复制到受监视目录中 如果您能提供任何有关Windows如何与众不同的建议,或者如果它确实与众不同的话,我们将不胜感激 这是在Microsoft Wi

我想了解一下Windows文件系统如何区分复制的文件(从其他位置复制和粘贴)和创建的文件(在文件夹中创建的新文件)

有一点背景知识,所以它更有意义:我有一个用于移动文件的应用程序。应用程序将监视一个目录,当一个文件被放置在该目录中时,它将把它移到别处。但是,我遇到的问题是,应用程序不会拾取在受监视目录中创建的文件,而是拾取在其他位置创建的文件,并将其复制到受监视目录中

如果您能提供任何有关Windows如何与众不同的建议,或者如果它确实与众不同的话,我们将不胜感激

这是在Microsoft Windows Server 2008 R2标准上运行的。不幸的是,我无法深入研究代码并查看引擎盖下发生了什么,因此需要了解其中的区别

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

  • 复制到E:驱动器的同一文件

如您所见,复制到E:drive的文件的创建时间是复制到的最晚时间,修改时间是该文件在以前位置的最后一次修改时间


因此,我想这说明了windows如何区分复制的文件和创建的文件。

文件系统不知道“复制”文件的操作。任何复制都是一系列文件打开/读取/写入/关闭操作。这同样适用于移动到不同的文件系统。不过,在同一个文件系统中移动是文件系统固有的操作,只需对文件系统执行一个命令即可完成

现在谈谈你的问题。最有可能的情况是,您捕获了文件的创建过程(在写入数据之前),并且当应用程序做出反应时,文件仍然会打开进行写入。因此,您需要等待文件关闭。
根据您进行监视的方式,这种等待是以不同的方式进行的。在文件系统过滤器中,等待文件关闭操作。使用.NET FileSystemWatcher无法跟踪文件关闭操作,但我在StackOverflow上看到了一些技巧(抱歉,没有链接)

我不认为这有什么区别。你是如何在你的directoy上创建文件的?直接保存,还是创建文件,编辑,然后保存?问题可能出在这个逻辑上,因为我最确定的是,操作系统对复制的文件与“常规”文件没有区别。因此,过程将是创建文件,然后将数据写入该文件。这会影响windows识别文件的方式吗?请记住,如果文件是空白的,这并没有什么区别,但它似乎仍然以不同的方式看待文件。Windows不应该与此有任何关系。读取文件夹的应用程序可能出现问题。你能提供更多关于它的信息吗?不幸的是,它几乎是一个黑匣子,我知道我要求很多不能提供任何洞察的应用程序,但只是想知道是否有任何明确的区别,这两个文件是放在文件夹中。如果你修改文件的地方,它也会更新“修改”日期。我不认为这是对仲裁“复制”和“创建”的区别“文件。我试用了一个文件,并添加了它作为说明,以便我们了解windows的区别。如果您要编写一个程序来列出文件系统中所有复制的文件。你会怎么做?您不能只使用创建日期和修改日期的信息,因为这不能保证此文件已被修改。我猜OP试图询问的是,是否存在标志或Windows对复制的文件进行的任何不同处理,而OP的应用程序在目标文件夹上出现时无法看到它。对此,我的回答是“没有区别”。