在 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 路径
Zipfile OpenRead 在 c# uwp 应用程序中抛出对路径的访问被拒绝异常?