我想从一个单独的线程删除目录中的某些文件,但有时删除不起作用。C#File.Delete不工作
DirectoryInfo dirInfo = new DirectoryInfo(Directory.GetCurrentDirectory());
FileInfo[] fileNames = dirInfo.GetFiles("*.*");
foreach (FileInfo fileName in fileNames)
{
string destinationFilename = cncDestinationDirectory + @"\" + dirInfo.Name + @"\" + fileName.Name;
if (File.Exists(destinationFilename))
File.Delete(destinationFilename);
File.Move(fileName.FullName, destinationFilename);
}
我的目标是在一个目录移动一些文件,但我知道File.Move
如果目标文件已经存在,不能正常工作。所以,我检查文件是否存在,如果它是真的,我删除这个文件,然后移动到原来的位置。
File.Delete
也会导致函数过早退出。 当前目录与正在运行的可执行文件不同,因为我之前将其设置到另一个文件夹中。
我该如何避免这个错误?仍然移动目标目录中的文件?
“过早退出”?那是什么意思?你是否遇到异常? – DavidG
我没有看到问题... – fredrik
您需要决定如何处理您在问题中提出的错误案例。检查文件之间存在然后删除它是完全可能的,该文件已被另一个进程打开。你可以在File.Delete周围捕获一个异常,如果它抛出的话不会移动原始文件,但是你最终会得到未被移动的文件。你无能为力。 – Neil