C# 访问文件错误: Accesss to path ... is denied

在某程序中访问文件时出现错误,遂拿2个文件实验一下

实验:

环境 Windows 11
VS 2022
.NET 7.0

在 TMP 目录下有两个文件:1 2

1 是我手动创建的一个文本文件,写入 111
2 是从微信上下载下来的文件

直接打开并读取文件 1 正常显示:
image

尝试打开文件 2 时出现错误:Accesss to path ... is denied (访问路径被拒绝)
这个报错一看就是路径问题,于是把 2 重命名为 1 这样就和 1 的访问路径一致了,排除文件名干扰
可是还是报错
image

访问路径和实际文件所在路径对比正确,排除路径问题

网上查询后,多是权限问题

使用管理员模式(Administrator 用户)打开 VS,执行,访问文件还是一样的报错

然而文件 2 在给本机所有用户加上所有读写权限后

image

再次访问还是报错

把文件复制到我的远程 Windowns 10 机器上相同路径下时,神奇的时,程序可以正常访问,而且文件也只具备读写权限

后来一看 File.Open 的参数,还有一个 FileAccess 的参数主动控制访问权限
因为只需要读取文件,遂加上:FileAccess.Read

using (var fs = File.Open(dp , FileMode.Open , FileAccess.Read))

即可正常访问!

后来发现,原来文件属性中还有个 ReadOnly (只读选项),微信下载的文件估计自动设置了这个属性为是

image

取消勾选后,文件即可通过:

using (var fs = File.Open(dp , FileMode.Open))

直接打开

此时不限制读写

posted @ 2023-02-08 18:10  windin  阅读(4909)  评论(1编辑  收藏  举报