C#Filestream拒绝访问

时间:2018-03-27 13:44:47

标签: c# filestream

我正在尝试使用C#创建文件,然后重新读取文件以填充富文本块。现在我的问题是创建/写入文件。

FileStream fs = File.Create(@".\\tmp\" + fileName);

这是我要写的地方。 。\ tmp \ exists,但在尝试写错时,说

  

。\ tmp \ filename访问被拒绝

3 个答案:

答案 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)

您使用的是相对路径,该路径指向您无权访问的位置。

可能的解决方案是:

  1. 创建文件夹C:/ data并确保您拥有该文件夹的读写权限

  2. 将代码更改为

    string fileName = "file.txt";
    FileStream fs = File.Create(@"C:/data/" + fileName);
    
  3. 这应该在C:/ data下创建一个文件,文件名为“file.txt”,假设你有正确的读写权限。

    如果您想要当前用户根目录的相对路径,请使用:

    string currentUserDirectory = 
           Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);