我试图从我的计算机上的一个目录中剪切文件,并在每次在此特定目录中创建文件时将其粘贴到新目录中.我已经在看目录它会是什么样的简单
if (e.ChangeType == System.IO.WatcherChangeTypes.Created)
{
//cut file
//paste into new directory
}
Run Code Online (Sandbox Code Playgroud)
Ken*_*nky 11
首先澄清,"剪切和粘贴"是用户界面术语.在文件系统中,它被称为"移动"文件.
其次,使用File.MoveTo的建议可能无法正常工作.IO Watcher将告诉您何时首次创建文件,而不是在写入文件时.如果您立即移动文件,您可以从作者下面拉出来.这可能导致写入文件的程序出错.
执行您提议的正确方法是等待文件被写入的进程关闭,然后移动它.
看一下MSDN 中的LockFileEx方法.您可以使用它来阻止,直到您对文件具有独占锁定(这将在写入过程关闭文件时发生).然后在释放锁之前移动文件.
最后,您可能不希望LockFileEx从文件系统观察者回调中调用.在获得文件的独占锁定之前,您可能需要等待很长时间.相反,您应该将创建的文件排队,以便由辅助线程(或线程池)锁定和移动.
string sourceFilePath = @"Your Path , ex : C:\";
string destinationFilePath = @"Your Path , ex : C:\";
System.IO.File.Move(sourceFilePath, destinationFilePath);
Run Code Online (Sandbox Code Playgroud)