我看到以下代码片段出现奇怪的错误:
File.Copy(oldPath, targetPath,true);
File.SetAttributes(targetPath, FileAttributes.Normal);
必须将文件移动到其他地方,并且由于我在源路径上没有写入权限,所以我复制了文件并为目标文件设置了访问权限。在我的系统(Windows 7 SP1)上,这工作正常。
但是,在(据我所知)任何 Windows 10 机器上,程序在 File.SetAttributes 处崩溃并显示消息
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not find file 'C:\ProgramData\...\BlankDb.sdf'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.SetAttributes(String path, FileAttributes fileAttributes)
这告诉我即使代码已经通过 File.Copy() 行,文件还没有被成功复制。File.Copy() 是否不再同步工作,或者在这方面在不同的操作系统上是否有任何其他更改?
坦率地说,我被难住了。起初我想到了时间问题并尝试将 Copy 调用包装在一个新线程中,直到我读到 File.Copy() 在复制成功或遇到错误之前无论如何都不会返回。