拒绝访问此目录

时间:2013-07-14 04:45:51

标签: c#

我发现使用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);

2 个答案:

答案 0 :(得分:3)

你在使用objReader.Close()移动之前关闭obj.Reader,对吗?将流打开到文件将阻止它被移动。如果不是这样的话,那么一个应用程序(我认为它被称为句柄)可以让你看到什么有权访问文件,所以你可以看到什么阻止你移动目录。

答案 1 :(得分:1)

我能想到的唯一可能的原因是你不是真正的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));