我正在尝试使用C#创建文件,然后重新读取文件以填充富文本块。现在我的问题是创建/写入文件。
FileStream fs = File.Create(@".\\tmp\" + fileName);
这是我要写的地方。 。\ tmp \ exists,但在尝试写错时,说
。\ tmp \ filename访问被拒绝
答案 0 :(得分:0)
可能是运行应用程序的用户可能无权写入该目录。最简单的测试方法是以管理员身份运行您的应用程序,然后您应该有权写入该目录。
您可能还想考虑写入当前目录,无论运行应用程序的用户至少应该访问该目录
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
答案 1 :(得分:0)
您可能无法访问相对路径。 要获取程序集目录:
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);
}
}
然后
FileStream fs = File.Create(Path.Combine(AssemblyDirectory, fileName));
答案 2 :(得分:-1)
您使用的是相对路径,该路径指向您无权访问的位置。
可能的解决方案是:
创建文件夹C:/ data并确保您拥有该文件夹的读写权限
将代码更改为
string fileName = "file.txt";
FileStream fs = File.Create(@"C:/data/" + fileName);
这应该在C:/ data下创建一个文件,文件名为“file.txt”,假设你有正确的读写权限。
如果您想要当前用户根目录的相对路径,请使用:
string currentUserDirectory =
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);