2014-10-17 216 views
2

我遇到了錯誤。我搜查了網頁,但沒有找到對我有意義的答案。我基本上試圖創建一個臨時文本文件,並寫入它。這有關錯誤代碼: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.

如果有人能告訴我什麼是錯的與我的代碼和我需要做什麼來解決它,我會很感激。邊注:抱歉蹩腳的代碼,我有點初學者:)

回答

3

您對文件名稱調用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

1

您正在創建一個目錄,而不是一個文件。您無法以文件形式打開目錄。

5
Directory.CreateDirectory(tempFile); 

您剛剛創建了一個目錄,其名稱以「* .txt」結尾。

然後您嘗試創建具有完全相同路徑的文件。但那不可能。