1

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

2 回答 2

3

您在使用 objReader.Close() 移动之前关闭 obj.Reader ,对吗?打开文件的流将阻止它被移动。如果不是这种情况,则有一个应用程序(我认为它被调用)可以让您查看可以访问文件的内容,因此您可以查看阻止您移动目录的内容。

于 2013-07-14T08:53:36.780 回答
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));
于 2013-07-14T06:16:56.157 回答