簡體   English   中英

拒絕訪問此目錄

[英]Access to this directory is denied

我發現使用StreamReader讀取文本文件有問題。 如果你使用它,它會以某種方式呈現文件本身所在的目錄不可移動。 例如-

cuLocation = "C:\\Users\\WoopyCat\\AppData\\Roaming\\.minecraft\\currentUser.txt";
System.IO.StreamReader objReader = new System.IO.StreamReader(cuLocation);
currentUser = objReader.ReadLine();
TBcurrentUser.Text = "The current user is " + currentUser + ".";

所有這些都發生在表單加載時。 然后我有一個按鈕點擊事件設置,發生這種情況 -

System.IO.Directory.Move("C:\\Users\\WoopyCat\\AppData\\Roaming\\.minecraft", "C:\\Users\\WoopyCat\\AppData\\Roaming\\.MCSwitcher\\" + currentUser);

但是,IDE表示拒絕訪問.minecraft。 但如果我刪除此代碼 -

cuLocation = "C:\\Users\\WoopyCat\\AppData\\Roaming\\.minecraft\\currentUser.txt";
System.IO.StreamReader objReader = new System.IO.StreamReader(cuLocation);
currentUser = objReader.ReadLine();

並用此代碼替換它 -

currentUser = "Paul";

它完美地運作。 它可以訪問.minecraft。 但我需要讀取currentUser.txt文件才能使我的程序正常工作。 有幫助嗎?

再次重申 - 這段代碼 -

cuLocation = "C:\\Users\\WoopyCat\\AppData\\Roaming\\.minecraft\\currentUser.txt";
System.IO.StreamReader objReader = new System.IO.StreamReader(cuLocation);
currentUser = objReader.ReadLine();

防止此代碼工作 -

 System.IO.Directory.Move("C:\\Users\\WoopyCat\\AppData\\Roaming\\.minecraft", "C:\\Users\\WoopyCat\\AppData\\Roaming\\.MCSwitcher\\" + currentUser);

你在使用objReader.Close()移動之前關閉obj.Reader,對嗎? 將流打開到文件將阻止它被移動。 如果不是這樣的話,那么一個應用程序(我認為它被調用的句柄)可以讓你看到什么可以訪問文件,所以你可以看到什么阻止你移動目錄。

我能想到的唯一可能的原因是你不是真正的WoopyCat用戶,這是獲取當前正在運行的用戶的路徑的正確方法。

var roamingFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); //This equals the \AppData\Roaming\ folder for the current user
Directory.Move(Path.Combine(roamingFolder, ".minecraft"), Path.Combine(roamingFolder,currentUser));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM