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