2011-06-13 35 views
0

我有一个想法来编写一些有用的代码,以便在删除之前将最近下载的临时文件(如安装文件和其他媒体文件)复制到某个安全位置。复制临时文件在删除之前

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); 

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

任何想法或任何其他逻辑吗?

+1

有几点:首先,您目前没有使用myDir。其次,你正在使用.First() - 这只会让你在目录中的* first *文件,这可能是你看到复制的唯一的文件。您可能需要更多的这种问题的递归方法。 – 2011-06-13 16:08:26

+4

xcopy如何从.bat脚本调用。无需将此复杂化。 – 2011-06-13 16:08:50

+0

是的,我同意克里斯,除非有特定的需要在代码中这样做。你可以看看robocopy - 我发现那很好用。 – 2011-06-13 16:10:08

回答

3

我绝对同意,有这个已经成熟的解决方案,但是如果你希望实现的代码东西,你应该看看FileSystemWatcher的http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

这会通知您的更改你正在观看这样的目录的程序你可以采取行动。

+0

这是我寻找的一半解决方案。这是我找到最近下载到临时文件夹的确切文件。 – nebula 2011-06-13 16:29:52

+0

这是没有必要事先知道该文件。如果使用过滤器“”监视临时目录并处理您感兴趣的事件,则创建,修改或删除的任何文件将在引发的事件中提供完整路径。所以你会自动获得新文件,并能够用很少的代码做一些事情。 – Bueller 2011-06-13 18:06:10

+0

这个答案真的有效。谢谢 ! – nebula 2011-06-14 09:30:22