C#在新目录中剪切文件和粘贴

时间:2010-10-13 18:52:49

标签: c#

我正在尝试从计算机上的一个目录中剪切文件,并在每次在此特定目录中创建文件时将其粘贴到新目录中。我已经在看目录会像

那样简单
if (e.ChangeType == System.IO.WatcherChangeTypes.Created)
{ 
    //cut file
    //paste into new directory            
}

4 个答案:

答案 0 :(得分:11)

首先澄清,“剪切和粘贴”是用户界面术语。在文件系统中,它被称为“移动”文件。

其次,使用File.MoveTo的建议可能无法正常工作。 IO Watcher将告诉您何时首次创建文件,而不是在写入文件时。如果您立即移动文件,您可以从作者下面拉出来。这可能会导致写入文件的程序出错。

执行您提议的正确方法是等待文件被写入的进程关闭,然后移动它。

查看MSDN中的LockFileEx方法。您可以使用它来阻止,直到您对文件具有独占锁定(这将在写入过程关闭文件时发生)。然后在释放锁之前移动文件。

最后,您可能不希望在文件系统观察程序回调中调用LockFileEx。在获得文件的独占锁定之前,您可能需要等待很长时间。相反,您应该将创建的文件排队,以便由辅助线程(或线程池)锁定和移动。

答案 1 :(得分:9)

确实,cut + paste相当于move,所以System.IO.File.MoveTo()应该很好地处理你的问题

答案 2 :(得分:6)

如果您只是在寻找要剪切/粘贴的代码,请查看方法:System.IO.File.Move()和System.IO.FileInfo.MoveTo()。两者基本上都是一样的。

答案 3 :(得分:6)

     string sourceFilePath = @"Your Path , ex : C:\";
     string destinationFilePath =  @"Your Path , ex : C:\";
     System.IO.File.Move(sourceFilePath, destinationFilePath);