C#恢复以前的目录

时间:2016-12-09 01:44:39

标签: c# file directory

我目前有一个FileHandler.cs类,可以使用文件执行各种操作。在VisualStudio中运行的C#的默认目录是Project/bin/DebugProject/bin/release,具体取决于您正在运行的目录。因此,在我的文件类的构造函数中,我执行以下操作:

System.IO.Directory.SetCurrentDirectory("..\\..\\TextFiles");

从bin或debug转到我拥有TextFiles文件夹的主文件夹。这个问题是,下次我创建FileHandler时,工作目录会增加2个级别TextFiles不存在。

如何在不使用绝对路径的情况下再次将工作目录设置为默认bin / debug?

我可以使用几种黑客技术,例如将其设置为静态或为每个创建的FileHandler增加一个计数器,并将当前目录从第一级提升到每个级别,但这两种解决方案都相当混乱。

谢谢,Kalen

1 个答案:

答案 0 :(得分:1)

我不会依赖默认目录。它可以根据应用程序的启动方式而改变。相反,您可以尝试检测可执行文件的位置并使用它来构造数据路径。像这样:

var exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// or AppDomain.CurrentDomain.BaseDirectory, see http://stackoverflow.com/a/837501/3246555 
var dataPath = Path.Combine(exePath, @"..\..\TextFiles");
//Directory.SetCurrentDirectory(dataPath);

此外,最好避免使用SetCurrentDirectory并构建完整的文件路径:

var filePath = Path.Combile(dataPath, "MyFile.txt");