c#访问路径被拒绝?

问题描述:

我遇到了错误。我搜查了网页,但没有找到对我有意义的答案。我基本上试图创建一个临时文本文件,并写入它。这有关错误代码:c#访问路径被拒绝?

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 A first chance exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll Additional information: Access to the path 'C:\Users\Jack Givens\AppData\Local\Temp\0lpe1k5t.txt' is denied.

如果有人能告诉我什么是错的与我的代码和我需要做什么来解决它,我会很感激。边注:抱歉蹩脚的代码,我有点初学者:)

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

+0

除了Scott写的内容之外,你应该改变所有你在方法中写“目录”的地方来改为说“文件”。它与目录真的没什么关系,所以你不想在那里留下误导性的方法和变量名称。 – 2014-10-17 20:27:50

+0

啊,我没有意识到我正在创建两个相同的文件。非常感谢! – Jack 2014-10-17 20:41:46

+2

@Jack你不创建两个相同的文件,你在创建一个目录时想要创建一个文件之前创建的文件的名称。 – 2014-10-17 20:53:22

您正在创建一个目录,而不是一个文件。您无法以文件形式打开目录。

Directory.CreateDirectory(tempFile); 

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

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