C# 在临时文件之前复制它';删除

C# 在临时文件之前复制它';删除,c#,.net,C#,.net,我有一个想法,写一些有用的代码,使最近下载的临时文件,如安装文件和其他媒体文件,可以复制到某个安全的位置之前,它被删除 string dir = "c:\\Users\\neal\\appdata\\Local\\Temp"; string newdir = "D:\\"; var directory = new DirectoryInfo(dir); var myFile = (from f in directory.GetFiles() orderby f.

我有一个想法,写一些有用的代码,使最近下载的临时文件,如安装文件和其他媒体文件,可以复制到某个安全的位置之前,它被删除

string dir = "c:\\Users\\neal\\appdata\\Local\\Temp";

string newdir = "D:\\";

var directory = new DirectoryInfo(dir);

var myFile = (from f in directory.GetFiles()
              orderby f.LastAccessTime descending
              select f).First();

var myDir = (from f in directory.GetDirectories()
             orderby f.LastAccessTime descending
             select f).First();

myFile.CopyTo(newdir, true);
上述方法实际上不起作用。我不知道为什么。我猜每个文件可能都没有访问权限(安装文件)


有什么想法或其他逻辑吗

我完全同意已经有了行之有效的解决方案,但是如果您希望在代码中实现一些东西,您应该查看FileSystemWatcher


这将通知您的程序您正在监视的目录的更改,以便您可以采取行动。

我完全同意,已经有经过验证的解决方案,但是如果您希望在代码中实现某些内容,您应该查看FileSystemWatcher


这将通知您的程序您正在查看的目录的更改,以便您可以采取行动。

有几点:首先,您目前根本没有使用myDir。其次,您正在使用.First()-这将只获取目录中的第一个文件,这可能是您看到的唯一被复制的文件。您可能需要更多的递归方法来解决这个问题。从.bat脚本调用xcopy怎么样。没有必要把这件事复杂化。是的,我同意Chris的观点,除非有特殊需要在代码中这样做。你可以看看robocopy——我发现它做得很好。你现在可以避免使用myDir,因为它还有其他部分可以使用。
LastAccessTime
现在已经很糟糕了。有几点:首先,你现在根本不使用myDir。其次,您正在使用.First()-这将只获取目录中的第一个文件,这可能是您看到的唯一被复制的文件。您可能需要更多的递归方法来解决这个问题。从.bat脚本调用xcopy怎么样。没有必要把这件事复杂化。是的,我同意Chris的观点,除非有特殊需要在代码中这样做。你可以看看robocopy-我发现它能很好地发挥作用。你现在可以避免使用myDir,因为它还有其他部分可以使用。
LastAccessTime
现在已经很糟糕了。这是我寻找的解决方案的一半。这是在我找到最近下载到temp文件夹的确切文件之后。不需要提前知道文件。如果使用“”筛选器监视临时目录并处理感兴趣的事件,则创建、修改或删除的任何文件都将在引发的事件中提供完整路径。因此,您将自动获取新文件,并能够用很少的代码处理它。这是我所寻找的解决方案的一半。这是在我找到最近下载到临时文件夹的确切文件之后。无需事先了解该文件。如果使用“”筛选器监视临时目录并处理感兴趣的事件,则创建、修改或删除的任何文件都将在引发的事件中提供完整路径。因此,您将自动获取新文件,并能够用很少的代码处理它。