C#剪切文件并粘贴到新目录

7

我想在电脑上的一个特定目录中,每当创建文件时,将文件从该目录剪切并粘贴到新目录中。我已经监视了该目录,那么像这样简单的事情是否可行:

if (e.ChangeType == System.IO.WatcherChangeTypes.Created)
{ 
    //cut file
    //paste into new directory            
}
4个回答

11

11
首先,澄清一下,“剪切和粘贴”是用户界面术语。在文件系统中,它被称为“移动”文件。
其次,建议使用File.MoveTo可能不会按您的意愿工作。IO Watcher会告诉您文件何时被创建,而不是何时写入完成。如果立即移动文件,您可能会从编写者手中夺走它。这可能导致编写文件的程序出现错误。
您提出的正确方法是等待编写文件的进程关闭文件,然后再移动文件。
请参阅MSDN中的LockFileEx方法。您可以使用它来阻止,直到您对文件拥有独占锁(当编写进程关闭文件时会发生)。然后在释放锁之前移动该文件。
最后,您可能不想从文件系统监视器回调中调用LockFileEx。在获得文件的独占锁之前,您可能需要等待很长时间。相反,您应该将创建的文件排队以由辅助线程(或线程池)锁定和移动。

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

6
如果你只是想要复制/粘贴代码,可以查看以下方法:System.IO.File.Move()和System.IO.FileInfo.MoveTo()。它们的功能基本相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接