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

时间:2011-10-09 20:48:17

标签: 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;

7 个答案:

答案 0 :(得分:110)

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

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

答案 1 :(得分:12)

您是否尝试指定某个文件名?

例如:

string route="D:\\somefilename.txt";

答案 2 :(得分:5)

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

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

档案详情:

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

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

  • 以登录用户身份运行时,将无错误地读取文件
  • 作为服务帐户运行时,尝试读取该文件会生成“无拒绝访问”错误

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

答案 3 :(得分:1)

您无权访问该文件。 请确保您是否可以访问该驱动器中的文件。

string route= @"E:\Sample.text";
FileStream fs = new FileStream(route, FileMode.Create);

您必须提供要创建的文件名。 请试试这个,现在你可以创建。

答案 4 :(得分:1)

如果所有这些问题仍然存在,请尝试将文件属性更改为:

File.SetAttributes(yourfile, FileAttributes.Normal);

答案 5 :(得分:0)

我遇到这个问题的时间比我想承认的要长。

我只是需要以管理员身份运行VS,我的菜鸟错误...

希望这对某人<3

有帮助

答案 6 :(得分:-1)

仅在 OSX 上使用以下对我有用。

var path = "TempForTest";