我正在使用C#编写程序,其中一部分是在Application.StartupPath
文件夹中创建一个目录,然后使用System.IO.File.WriteAllText()
在其中编写一个文本文件。我的问题是我的程序崩溃,抛出一个UnauthorizedAccessException
并告诉我"对路径的访问被拒绝"这是好的,奇怪的,考虑到它崩溃而不管目录是什么我正在运行该程序,无论是从我的云文件夹,桌面,我的文档等运行,甚至在任何这些目录中以管理员身份运行它。
我调试它的路径是C:\Users\Jeff\Google Drive\Documents\Visual Studio 2013\Projects\Palobo\Palobo\bin\Debug
。它是using System.IO;
,我使用的代码包括:
Directory.CreateDirectory(Application.StartupPath);
File.WriteAllText(Application.StartupPath, "Password=" + x);
其中x
是用户输入的一些字符串数据。
我得到的错误是:
访问路径' C:\ Users \ Jeff \ Google Drive \ Documents \ Visual Studio 2013 \ Projects \ Palobo \ mzdon29被拒绝。
(mzdon29是jwalk96的加密结果)。
有没有人对我遇到这个问题的原因有任何想法?谢谢!
答案 0 :(得分:4)
Application.StartupPath
是一个文件夹(启动应用程序的位置)。尝试在该文件夹中指定确切的文件名:
File.WriteAllText(Application.StartupPath + "\\MyFile.txt", "Password=" + x);
答案 1 :(得分:4)
我们来看看这段代码:
Directory.CreateDirectory(Application.StartupPath);
File.WriteAllText(Application.StartupPath, "Password=" + x);
您正在尝试创建已存在的目录,然后您尝试将该目录用作文件名!您需要在路径的末尾添加一些内容,以便您使用新的文件夹和文件。
此外,首先使用StartupPath是不好的做法。您可以创建一个快捷方式,将启动路径设置为任何位置。但具体来说,默认的StartupPath通常位于Program Files文件夹下。默认情况下,此文件夹下的项目只读标准用户。相反,您应该查看使用Application Data文件夹,如下所示:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)