【发布时间】:2011-06-06 12:04:25
【问题描述】:
我已经为此苦苦挣扎了一段时间。调用 File.Copy 方法后,我无法访问文件。这是我尝试过的:
File.Copy(sourceFile, destinationFile, true);
FileStream fs = File.Open(destinationFile, FileMode.Open);
我在第二行收到 UnauthorizedAccessException。它说:访问路径...被拒绝。我也尝试过here 的建议,但没有奏效。
感谢任何帮助。
编辑:这是我发现的。如果我这样做:
File.Copy(sourceFile, destinationFile, true);
FileStream fs = File.Open(destinationFile, FileMode.Open, FileAccess.Read);
它不会抛出异常。我试图访问的文件是只读的。所以,我尝试像这样删除只读属性:
File.Copy(sourceFile, destinationFile, true);
FileInfo fileInfo = new FileInfo(destinationFile);
fileInfo.IsReadOnly = false;
FileStream fs = File.Open(destinationFile, FileMode.Open, FileAccess.ReadWrite);
我得到了和以前一样的异常。顺便说一句,我检查了我是否可以手动打开文件并进行编辑,我可以。当然,当我取消选中只读复选框时。在调试时,我还在 Windows 资源管理器中检查了文件属性,就在第三行之后,该文件不再是只读的。检查完所有内容后,我不明白为什么在第四行抛出异常。
【问题讨论】:
-
尝试在两行之间加上
System.Threading.Thread.Sleep(1000);,看看是否是时间问题(文件可能仍被File.Copy()锁定 -
我尝试制作类似的东西。我创建了一个 while 循环,如果没有抛出异常,它应该退出。但它从未退出...
-
复制前有没有试过去掉只读属性?
-
@Vale:该死,但这是一个开始 :) 当您“双重切换”只读(在源或目标上)时会发生什么?
-
@leppie 这实际上对目标文件有效!我不知道你是怎么想出来的,但它解决了我的问题。非常感谢。
标签: c# file-access