如何浏览几个文件夹?

一个select是做几次System.IO.Directory.GetParent()。 从执行程序集所在的位置移动几个文件夹还有更优雅的方式吗?

我想要做的是find一个文本文件驻留在应用程序文件夹上的一个文件夹。 但是程序集本身在应用程序文件夹深处的文件夹内。

7 Solutions collect form web for “如何浏览几个文件夹?”

其他简单的方法是做到这一点:

 string path = @"C:\Folder1\Folder2\Folder3\Folder4"; string newPath = Path.GetFullPath(Path.Combine(path, @"..\..\")); 

注意这两个级别。 结果将是: newPath = @"C:\Folder1\Folder2\";

如果c:\ folder1 \ folder2 \ folder3 \ bin是path,则以下代码将返回bin文件夹的path基础文件夹

 string directory=System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString()); 

即C:\ folder1中\文件夹2 \ folder3

如果你想要folder2path,那么你可以通过获取目录

 string directory = System.IO.Directory.GetParent(System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString()).ToString(); 

那么你将得到的path为c:\ folder1 \ folder2 \

你可以使用.. \path去上一级,…. \path从path走两级。

你也可以使用path类。

C#path类

以下方法search以应用程序启动path(* .exe文件夹)开头的文件。 如果没有find该文件,则会search父文件夹,直到find文件或到达根文件夹。 如果找不到该文件,则返回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程序集的引用。 您可以通过replaceApplication.StartupPath
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)如果你喜欢。

这是最适合我的工作:

string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../"));

获得“正确”的path不是问题,加上“../”显然是这样做的,但是在那之后,给定的string是不可用的,因为它只是在末尾添加“../”。 用Path.GetFullPath()围绕它将给你绝对path,使它可用。

这可能有帮助

 string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../../")) + "Orders.xml"; if (File.Exists(parentOfStartupPath)) { // file found } 

也许你可以使用一个函数,如果你想声明的层数,并将其放入一个函数?

 private String GetParents(Int32 noOfLevels, String currentpath) { String path = ""; for(int i=0; i< noOfLevels; i++) { path += @"..\"; } path += currentpath; return path; } 

你可以这样称呼它:

 String path = this.GetParents(4, currentpath); 
  • 使控制台等待用户inputclosures
  • 从Process.Start隐藏控制台窗口C#
  • 我怎样才能写出快速的彩色输出到控制台?
  • 如何在控制台应用程序中添加App.Config文件
  • 如何从Windows服务运行控制台应用程序?
  • closuresc ++控制台应用程序时会发生什么?
  • 显示/隐藏C#控制台应用程序的控制台窗口
  • 如何从控制台应用程序运行一个winform?
  • 为什么控制台窗口立即closures而不显示输出?
  • 更酷的ASCII Spinners?
  • 如何在.NET控制台应用程序中获取应用程序的path?