C# 访问文件错误: Accesss to path ... is denied
在某程序中访问文件时出现错误,遂拿2个文件实验一下
实验:
环境 Windows 11
VS 2022
.NET 7.0
在 TMP 目录下有两个文件:1 2
1 是我手动创建的一个文本文件,写入 111
2 是从微信上下载下来的文件
直接打开并读取文件 1 正常显示:
尝试打开文件 2 时出现错误:Accesss to path ... is denied (访问路径被拒绝)
这个报错一看就是路径问题,于是把 2 重命名为 1 这样就和 1 的访问路径一致了,排除文件名干扰
可是还是报错
访问路径和实际文件所在路径对比正确,排除路径问题
网上查询后,多是权限问题
使用管理员模式(Administrator 用户)打开 VS,执行,访问文件还是一样的报错
然而文件 2 在给本机所有用户加上所有读写权限后
再次访问还是报错
把文件复制到我的远程 Windowns 10 机器上相同路径下时,神奇的时,程序可以正常访问,而且文件也只具备读写权限
后来一看 File.Open 的参数,还有一个 FileAccess 的参数主动控制访问权限
因为只需要读取文件,遂加上:FileAccess.Read
using (var fs = File.Open(dp , FileMode.Open , FileAccess.Read))
即可正常访问!
后来发现,原来文件属性中还有个 ReadOnly (只读选项),微信下载的文件估计自动设置了这个属性为是
取消勾选后,文件即可通过:
using (var fs = File.Open(dp , FileMode.Open))
直接打开
此时不限制读写