我正在寻找有关Windows文件系统如何区分复制(从其他位置复制和粘贴)的文件与创建的文件(在文件夹中创建的新文件)之间的一些建议。
这方面的一些背景知识更有意义:我有一个用于移动文件的应用程序。应用程序将监视目录,当文件放在目录中时,它会将其移动到其他位置。但是,我遇到的问题是,应用程序不会获取在受监视目录中创建的文件,但会拾取已创建的文件,并将其复制到受监视目录中。
任何有关Windows如何区分或者根本不同的建议都将受到高度赞赏。
这是在Microsoft Windows Server 2008 R2 Standard上运行的。我不能深入研究代码,不幸地看到底层发生了什么,所以需要了解其中的差异。
答案 0 :(得分:1)
文件系统不知道"复制"文件。任何复制都是文件打开/读/写/关闭操作的序列。这同样适用于移动到不同的文件系统。但是,在同一文件系统中移动是文件系统的本机操作,可以通过一个命令完成文件系统。
现在关于你的问题。很可能你抓住了文件的创建(在写入数据之前),当你的应用程序做出反应时,文件仍然被打开以便写入。所以你需要等到文件关闭。 根据您的监控方式,这种等待是以不同的方式完成的。在文件系统过滤器中,您等待文件关闭操作。使用.NET FileSystemWatcher无法跟踪文件关闭操作,但我在StackOverflow上看到了一些技巧(虽然没有链接,抱歉)。
答案 1 :(得分:0)