C#文件流拒绝访问
我正在尝试使用C#创建一个文件,然后将文件读回以填充一个富文本块。现在我的问题是创建/写入文件C#文件流拒绝访问,c#,filestream,C#,Filestream,我正在尝试使用C#创建一个文件,然后将文件读回以填充一个富文本块。现在我的问题是创建/写入文件 FileStream fs = File.Create(@".\\tmp\" + fileName); 这就是我想写信给的地方\tmp\存在,但在尝试写入时出错,表示 \tmp\filename访问被拒绝 问题可能是运行应用程序的用户可能没有写入该目录的权限。最简单的测试方法是以管理员身份运行应用程序,您应该有权写入该目录 您可能还想考虑写入当前目录,不管运行应用程序的用户至少应该访问该目录 Sys
FileStream fs = File.Create(@".\\tmp\" + fileName);
这就是我想写信给的地方\tmp\存在,但在尝试写入时出错,表示
\tmp\filename访问被拒绝
问题可能是运行应用程序的用户可能没有写入该目录的权限。最简单的测试方法是以管理员身份运行应用程序,您应该有权写入该目录
您可能还想考虑写入当前目录,不管运行应用程序的用户至少应该访问该目录
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
您使用的是一个相对路径,该路径指向您无法访问的位置 一个可能的解决办法是:
string fileName = "file.txt";
FileStream fs = File.Create(@"C:/data/" + fileName);
string currentUserDirectory =
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
可能您没有访问相对路径的权限。 要获取程序集目录,请执行以下操作:
private static string AssemblyDirectory
{
get
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
然后
我是运行程序的人,“.”文件夹位于我自己的用户文件夹中。我不知道为什么我不能访问它。我用管理员权限启动了VS,但并没有修复它。相对文件路径指向我自己的用户目录。我知道事实上我有权知道。在创建文件夹之前和之后,我曾经尝试过使用“C:/tmp/”,这会产生相同的问题。程序运行在哪个用户下?这可能是导致问题的原因。为什么我没有访问权限?这至少有助于我了解发生了什么。这在“.”下,它翻译成类似于
/users/[me]/source/repos../app1/x86/debug/tmp/
的东西,它在我的用户文件夹下。我认为“.”表示程序集运行的目录,但为了更好地使用函数AssemblyDirectory
。我正在尝试您的代码,但是GetExecutingAssembly()
似乎无效。我有一套系统。其他所有东西都不会弄乱getExecutionGassembly()
位于System.Reflection.Assembly
中。哪一个是错误?导入System.Reflection.Assembly后,Reflection.Assembly不存在。没有它,就是getExecutionGassembly不包含在程序集中
FileStream fs = File.Create(Path.Combine(AssemblyDirectory, fileName));