[英]Access to the path denied error in C#
我讀過一篇類似的文章,但我無法弄清楚問題所在。
我已經更改了 windows 權限並更改了路由。
當我嘗試保存文件時,它拋出異常:
訪問路徑 **** 被拒絕。
string route="D:\\";
FileStream fs = new FileStream(route, FileMode.Create); <--here is the problem
StreamWriter write = new StreamWriter(fs);
patient person = new patient();
patient.name = textBox1.Text;
patient.name2 = textBox2.Text;
您正在嘗試為目錄(文件夾)創建 FileStream 對象。 指定一個文件名(例如@"D:\\test.txt"),錯誤就會消失。
順便說一下,我建議您使用將 Encoding 作為第二個參數的 StreamWriter 構造函數,否則在稍后嘗試讀取保存的文件時(使用 StreamReader),您可能會遇到令人不快的意外。
您是否嘗試指定一些文件名?
例如:
string route="D:\\somefilename.txt";
tl;dr 版本:確保您沒有嘗試在讀/寫模式下打開在文件系統中標記為只讀的文件。
我在嘗試讀取 XML 文件時遇到了這個錯誤。 我發現在某些情況下(如下詳述),即使路徑和文件名正確,也會為文件生成此錯誤。
文件詳情:
嘗試以編程方式讀取文件時,在運行完全相同的代碼時觀察到以下行為:
為了解決這個問題,我不得不將方法調用從默認值(以 RW 方式打開)更改為以 RO 方式打開文件。 一旦我做了那個改變,它就停止拋出錯誤。
我遇到這個問題的時間比我想承認的要長。
我只需要以管理員身份運行 VS,我的菜鳥錯誤......
希望這有助於某人 <3
如果所有這些答案仍然存在問題,請嘗試將文件屬性更改為:
File.SetAttributes(yourfile, FileAttributes.Normal);
您無權訪問該文件。 請確定您是否可以訪問該驅動器中的文件。
string route= @"E:\Sample.text";
FileStream fs = new FileStream(route, FileMode.Create);
您必須提供要創建的文件名。 請試試這個,現在你可以創建了。
TLDR:就我而言,它與 AVAST 有關! =>將您的應用程序列入白名單。
突然,我在寫的 windows WPF 程序中也遇到了這個UnauthorizedAccessException問題。 沒有一個解決方案有效 - 除了我無法弄清楚如何將我的應用程序提升到完全權限(不使用 VS)同時,已經在管理員帳戶上,我覺得沒有必要深入挖掘在權限問題上。
這些文件是圖像文件(jpg、psd、webp 等)我沒有嘗試打開/寫入目錄,它一直是文件的有效路徑,我需要寫入文件, FileAccess.ReadWrite
是不可避免的。 這些文件(以及它們的任何父目錄)都不是只讀的(我什至在通過FileInfo.IsReadOnly
調用new FileStream(path, mode, access, share)
之前通過代碼檢查過) - 那么突然發生了什么???
思考:我的驅動器崩潰了,所以我從另一個驅動器上解壓了我的解決方案代碼的備份。 同時,我在我的應用程序中添加了代碼到 PInvoke API 以直接讀取硬盤扇區物理字節以及 USB 插拔監控。
當我添加這些時,我開始得到異常,但即使我暫時從應用程序中刪除了相關代碼,我仍然得到 UnauthorizedAccessException 。
然后我想起很久以前做過的一件事,一個艱苦的類似問題,我希望我的應用程序通過 Wifi 傳遞敏感數據,這是在 AVAST 異常中添加可執行文件,以及程序集目錄(我的應用程序已經在通過防火牆授權的應用程序)
剛剛在 AVAST 設置中為我的應用程序做了這件事,異常消失了!!! 整整兩天我潛伏在 StackOverflow 和 web 繼續前進,終於!
詳細信息:我無法准確指出 AVAST 在我的應用程序中不喜歡的地方是我所做的唯一更改:
如果這可以幫助那些像我一樣的人,他們不會在“我傳遞的是目錄路徑而不是文件路徑”上失敗,但是,沒有時間確切地了解為什么防病毒軟件認為我們自己的代碼是惡意軟件。
在 OSX 上使用下面的內容對我有用。
var path = "TempForTest";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.