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

Posted

技术标签:

【中文标题】在 C# 中访问路径被拒绝错误【英文标题】:Access to the path denied error in C# 【发布时间】:2011-12-04 02:56:30 【问题描述】:

我读过类似的帖子,但我就是想不通。

我已经更改了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;

【问题讨论】:

当您说您已更改 Windows 权限时,请准确解释您的意思。 D:\ 是网络共享、本地驱动器还是外部驱动器?是光盘吗? D:\ 是我硬盘上的一个分区。但我已将其更改为 C:\ 和我的文档。没有任何效果。 这里提供的解决方案都不适合我。 【参考方案1】:

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

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

【讨论】:

一个疑问。如何读取用户要保存文件的地方的路线,以便我可以将路线保存在字符串路线中? @aerojun:这实际上是另一个问题,但我认为您需要(假设“路由”表示“路径”)是 SaveFileDialog 类以及静态 Path 类中的路径管理方法.【参考方案2】:

您是否尝试指定一些文件名?

例如:

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

【讨论】:

【参考方案3】:

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

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

文件详情:

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

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

以登录用户身份运行时,读取文件没有错误 当作为服务帐户运行时,尝试读取文件会生成没有详细信息的访问被拒绝错误

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

【讨论】:

这解决了我的问题:FileStream fs = new FileStream(szFileName, FileMode.Open, FileAccess.Read); 这个与@FelipeGavilán 一起工作,另外,我设置的文件流没有额外的权限,我现在想知道其余的 CRUD 操作会发生什么。【参考方案4】:

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

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

希望这对某人有所帮助

【讨论】:

【参考方案5】:

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

File.SetAttributes(yourfile, FileAttributes.Normal);

【讨论】:

【参考方案6】:

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

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

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

【讨论】:

【参考方案7】:

只需在 OSX 上使用以下对我有用。

var path = "TempForTest";

【讨论】:

以上是关于在 C# 中访问路径被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

Directory.Exists - 访问被拒绝 C# 的 UNC 路径

访问路径被拒绝 - C# Directory.Move

Zipfile OpenRead 在 c# uwp 应用程序中抛出对路径的访问被拒绝异常?

dotnet 6.0 C# - 访问路径被拒绝

System.UnauthorizedAccessException:对路径的访问被拒绝(UWP C#)

“对路径的访问被拒绝.” 是怎么回事