访问C#中的路径被拒绝错误

aer*_*jun 46 c# filestream access-denied

我已经阅读了类似的帖子,但我无法弄清楚问题.

我更改了Windows权限并更改了路由.

当我尝试保存文件时,它会抛出异常:

访问路径****被拒绝.

string route="D:\\";
FileStream fs = new FileStream(route, FileMode.Create); <--here is the problem
        StreamWriter write = new StreamWriter(fs);
        patient person = new patient();
        patient.name = textBox1.Text;
        patient.name2 = textBox2.Text;
Run Code Online (Sandbox Code Playgroud)

Ala*_*lan 121

您正在尝试为目录(文件夹)创建FileStream对象.指定文件名(例如@"D:\ test.txt"),错误将消失.

顺便说一句,我建议您使用StreamWriter构造函数将Encoding作为其第二个参数,因为否则您在稍后尝试读取保存的文件时可能会遇到令人不快的意外(使用StreamReader).


Ren*_*ama 12

你尝试指定一些文件名吗?

例如:

string route="D:\\somefilename.txt";
Run Code Online (Sandbox Code Playgroud)


Tae*_*ost 5

tl; dr version:确保您没有尝试在读/写模式下将文件系统中标记的文件打开为只读.

我在尝试读取XML文件的旅行中遇到了这个错误.我发现在某些情况下(详见下文),即使路径和文件名正确,也会为文件生成此错误.

文件详情:

  • 路径和文件名有效,文件存在
  • 服务帐户和登录用户都具有对文件的完全控制权限和完整路径
  • 该文件标记为只读
  • 它在Windows Server 2008 R2上运行
  • 文件的路径是使用本地驱动器号,而不是UNC路径

尝试以编程方式读取文件时,在运行完全相同的代码时观察到以下行为:

  • 以登录用户身份运行时,将读取该文件而不会出现错误
  • 作为服务帐户运行时,尝试读取该文件会生成"拒绝访问"错误,但没有详细信息

为了解决这个问题,我不得不将方法调用从默认值(打开为RW)更改为将文件打开为RO.一旦我做了一个改变,它就停止了抛出一个错误.

  • 这解决了我的问题:FileStream fs = new FileStream(szFileName,FileMode.Open,FileAccess.Read); (3认同)