別のスレッドからディレクトリ内のファイルをいくつか削除しようとしていますが、削除が機能しないことがあります。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