其他分享
首页 > 其他分享> > CodeGo.net> File.Copy方法使文件不可访问

CodeGo.net> File.Copy方法使文件不可访问

作者:互联网

我为此苦了一段时间.调用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资源管理器中的文件属性,该文件不再是只读的.检查完所有内容后,我不明白为什么在第四行引发了异常.

解决方法:

您确定只有使用File.Copy复制的文件无法打开,而不是目标文件夹中的每个文件吗?这是常规的NTFS文件夹还是网络共享?

如果您正在运行防病毒或安全软件,请尝试将其禁用.创建文件后,他们通常会打开文件进行扫描.

更新资料

根据http://msdn.microsoft.com/en-us/library/b9skfh7s.aspx-File.Open引发的UnauthorizedAccessException不会给出消息“拒绝访问路径…”. (编辑:我也看不到File.Copy的消息,所以这可能是错误的)

我怀疑是您的File.Copy失败,但出现该异常,并且您无权读取源文件或写入目标文件.您可能正在查看突出显示的源代码行,该行显示了要执行的下一行.

所以-也许您的副本失败了,而不是File.Open吗?

标签:file-access,c
来源: https://codeday.me/bug/20191102/1992251.html