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