一种选择是做几次System.IO.Directory.GetParent()。有没有更优雅的方式从执行程序所在的位置向上移动几个文件夹?
我想要做的是找到一个文本文件,该文件位于应用程序文件夹上方的一个文件夹中。但是程序集本身位于容器中,该容器位于应用程序文件夹的深处。
Directory.SetCurrentDirectory(@"..\..\..\..");
一种选择是做几次System.IO.Directory.GetParent()。有没有更优雅的方式从执行程序所在的位置向上移动几个文件夹?
我想要做的是找到一个文本文件,该文件位于应用程序文件夹上方的一个文件夹中。但是程序集本身位于容器中,该容器位于应用程序文件夹的深处。
Directory.SetCurrentDirectory(@"..\..\..\..");
Answers:
如果c:\ folder1 \ folder2 \ folder3 \ bin是路径,则以下代码将返回bin文件夹的路径基本文件夹
//string directory=System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString());
string directory=System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString();
即,c:\ folder1 \ folder2 \ folder3
如果您需要folder2路径,则可以通过以下方式获取目录
string directory = System.IO.Directory.GetParent(System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString()).ToString();
那么您将获得路径为c:\ folder1 \ folder2 \
以下方法搜索以应用程序启动路径(* .exe文件夹)开头的文件。如果在该位置找不到文件,则搜索父文件夹,直到找到该文件或到达根文件夹为止。null
如果找不到该文件,则返回。
public static FileInfo FindApplicationFile(string fileName)
{
string startPath = Path.Combine(Application.StartupPath, fileName);
FileInfo file = new FileInfo(startPath);
while (!file.Exists) {
if (file.Directory.Parent == null) {
return null;
}
DirectoryInfo parentDir = file.Directory.Parent;
file = new FileInfo(Path.Combine(parentDir.FullName, file.Name));
}
return file;
}
注意:Application.StartupPath
通常在WinForms应用程序中使用,但在控制台应用程序中也可以使用;但是,您将必须设置对System.Windows.Forms
程序集的引用。如果愿意,可以替换Application.StartupPath
为
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
。
如果知道要导航到的文件夹,请找到该文件夹的索引,然后找到子字符串。
var ind = Directory.GetCurrentDirectory().ToString().IndexOf("Folderame");
string productFolder = Directory.GetCurrentDirectory().ToString().Substring(0, ind);
a
例如,如果文件夹的名称为just ,该怎么办?如果路径看起来像这样C:\Folderame3\Folderame2\Folderame\...
怎么办?