【问题标题】:c# Access to path denied?c#访问路径被拒绝?
【发布时间】:2014-10-17 20:21:37
【问题描述】:

我遇到了错误。我在网上搜索过,但没有找到对我有意义的答案。我基本上是在尝试创建一个临时文本文件,然后写入它。这里是有关错误的代码:

using ( StreamWriter output = new StreamWriter(File.Create(GetTemporaryDirectory())))

和 getTemporaryDirectory 方法:

 public string GetTemporaryDirectory() {
        string tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
        string tempFile = Path.ChangeExtension(tempDirectory, ".txt");
        Directory.CreateDirectory(tempFile);
        return tempFile;
    }

最后但并非最不重要的错误:

dir = C:\Users\Jack Givens\AppData\Local\Temp\5ftxwy31.txt 在 mscorlib.dll 中发生了“System.UnauthorizedAccessException”类型的第一次机会异常 mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常 附加信息:对路径“C:\Users\Jack Givens\AppData\Local\Temp\0lpe1k5t.txt”的访问被拒绝。

如果有人能告诉我我的代码有什么问题以及我需要做些什么来修复它,我将不胜感激。旁注:对不起,糟糕的代码,我有点初学者:)

【问题讨论】:

    标签: c# access-denied temporary-directory


    【解决方案1】:
     Directory.CreateDirectory(tempFile);
    

    您刚刚创建了一个目录,其名称以“*.txt”结尾。

    然后您尝试创建具有完全相同路径的文件。但这是不可能的。

    【讨论】:

      【解决方案2】:

      您在文件名上调用CreateDirectory,所以现在File.Create 试图调用的路径中存在一个文件夹。只需简单地删除 Directory.CreateDirectory(tempFile); 行(不需要,因为该文件夹保证存在)并且您的代码应该可以工作。

      【讨论】:

      • 除了Scott写的,你应该把方法中所有写“目录”的地方改成“文件”。它实际上与目录关系不大,所以你不想在那里留下误导性的方法和变量名。
      • 啊,我没有意识到我正在创建两个相同的文件。非常感谢!
      • @Jack 你没有创建两个相同的文件,你在尝试创建文件之前创建了一个目录,其中包含你想要创建的文件的名称。
      【解决方案3】:

      您正在创建一个目录,而不是一个文件。您不能将目录作为文件打开。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-02
        • 2010-11-29
        • 1970-01-01
        • 2016-11-11
        • 1970-01-01
        相关资源
        最近更新 更多