たとえば、20 GBのファイルがあり、それを「c:/folder/filename.ext」にコピーすることにしたとします。明らかに、これは完了するのに少し時間がかかります。
コピーが行われている間に実行された場合、次の結果はどうなりますか?
File.Exists("c:/folder/filename.ext");
コピーが行われている間に実行された場合、次の結果はどうなりますか?
コードを実行しているプロセスに、ファイルを読み取るための十分な権限があると仮定すると、返されます(ファイルが存在する場合でも、アカウントにファイルを読み取るための十分な権限がない場合は、返されるTrue
ことを忘れないでください)。このメソッドは、ファイルが現在書き込み中か読み取り中かを気にしません。File.Exists
False
File.Exists
public class Program
{
static void Main()
{
Task.Factory.StartNew(() =>
{
using (var stream = File.OpenWrite("test.dat"))
{
Thread.Sleep(100);
}
});
Thread.Sleep(10);
// prints True
Console.WriteLine(File.Exists("test.dat"));
}
}
よくわかりませんが、ファイル(完全または部分的にコピーされたもの)があればtrueを返すと思います。
コピープロセスの状態が必要な場合は、長さを確認するか、ハッシュ(SHA1)を使用する必要があります。