我一直无法找到这个问题的答案,也不确定如何测试它.
如果我有以下两行;
TextWriter tw = new StreamWriter(txtPath,true);
File.Copy(OriginalPath, DestinationPath));
tw.WriteLine("blah");
Run Code Online (Sandbox Code Playgroud)
第3行是否等到File.Copy完全完成,或者File.Copy还在运行时第3行是否可以启动?
我不清楚为什么要问这个,但是File.Copy
是一个"同步"方法 - 所以它不会返回,直到操作系统认为它已经复制了文件.但是,请注意,因为根据执行复制的驱动器,写入可能会被缓存而不能完全写入磁盘.该磁盘上的后续操作将考虑到这一点(例如,如果您然后尝试将第一个目标复制到新目标,那将起作用); 但如果磁盘在File.Copy
返回后断电,则所有数据可能都没有写入磁盘.这是某些SSD驱动器的特殊问题.